学习使用Django2 前台页面展示

Django  2.1  python 3.7

创建一个虚拟环境

  python  -m  venv  虚拟环境名称 

进入虚拟环境

下载django  

pip install  django==2.1

1 创建项目:
2 
3 django-admin startproject 项目名称   .  -->创建项目  有个点
4 
5 创建应用:
6 python manage.py startapp  创建应用

一个干净的Django 框架,我们需要打开settings.py 进行设置

第一步: 创建数据库 : MyDB  mysql 有关命令请看 这篇文章: https://www.cnblogs.com/whatarey/p/11396616.html

第二步: Django应用中的settings.py后台设置中文,数据库修改为mysql配置

 1 DATABASES = {
 2     'default': {
 3         'ENGINE': 'django.db.backends.mysql',
 4         'NAME': 'MyDB', #数据库名字,
 5         'USER': 'root', #数据库登录用户名
 6         'PASSWORD': '123456', #数据库登录密码
 7         'HOST': 'localhost', #数据库所在主机
 8         'PORT': '3306', #数据库端口
 9     }
10 }
11 
12 
13 
14 LANGUAGE_CODE = 'zh-hans'

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Web' --加上项目名
]
 

 第三步:创建模型:

1 class  UserInfo(models.Model):
2     UserName = models.CharField(max_length=20)#用户名
3     create_date = models.DateField()#创建日期
4     pwd=models.CharField(max_length=20)#密码
5     

第四步,后台admin.py 注册

from .models  import  UserInfo
 
admin.site.register(UserInfo)

 第五步   执行文件迁移

 

python manage.py makemigrations
python manage.py migrate

这时候,一定会出现这一个错误:

在项目中的 init.py 中加入:

import pymysql
pymysql.install_as_MySQLdb()

在运行就可以了

运行:

进入后台,突然发现没有创建后台管理员账号.... 


创建管理员账号:
python manage.py createsuperuser

这个密码太坑了。。。。

第六步:往项目的views.py 中添加

 1 from django.shortcuts import render
 2 from django.http  import  HttpResponse,Http404
 3 from django.template import loader 
 4 #这里是视图
 5 
 6 def  index(request):
 7     '''写法1'''
 8     # template=loader.get_template('Web_Templates/index.html')
 9     # # 2.定义上下文
10     # context={"title":"Index","heatde_title":"Index","BodyHtml":"这是我的主页内容<a href=''>hehe</a>"} # 这个上下文是一个字典,它将模板内的变量映射为 Python 对象。
11     # return HttpResponse(template.render(context,request))
12 
13     '''写法2'''
14     data={
15 "title":"Index",
16 "heatde_title":"Index",
17 "BodyHtml":"中间body",
18 "id":[1,2,3,4,5]
19     }
20     context = data
21     return render(request, 'Web_Templates/index.html', context)
22     # 注意到,我们不再需要导入 loader 和 HttpResponse 。
23     # 不过如果你还有其他函数(比如说 detail, results, 和 vote )需要用到它的话,就需要保持 HttpResponse 的导入。
24 
25 
26 def  getHtml(request,id):
27     list=[0,1,3,4]
28     try:
29         question =list[id] 
30     except  Exception as e:
31         raise Http404("Question does not exist")
32     return render(request, 'Web_Templates/Show.html', {'question': question})

第七步:项目中添加urls.py

 1 from  django.urls import path
 2 
 3 from . import views
 4 
 5 app_name="Web"
 6 urlpatterns=[
 7       #url(r'^$'
 8     path("",views.index,name="Index"),
 9     path("Show/<int:id>/",views.getHtml,name="Show"),
10 # '''
11 #     #   # ex: /polls/
12 #     # path('', views.index, name='index'),
13 #     # # ex: /polls/5/
14 #     # path('<int:question_id>/', views.detail, name='detail'),
15 #     # # ex: /polls/5/results/
16 #     # path('<int:question_id>/results/', views.results, name='results'),
17 #     # # ex: /polls/5/vote/
18 #     # path('<int:question_id>/vote/', views.vote, name='vote'),
19 # '''
20 ]

第八步,应用的urls.py 注册

from django.urls import path,include 导入 include

urlpatterns = [
    path('admin/', admin.site.urls), 
    # url(r'^$', views.index),
    path('',include('Web.urls'))  # 导入你app 自己创建的urls
]
 

第九步:创建模板 我是在 MyWeb

 第十步,把模板路径添加到项目的settings.py

 1 TEMPLATES = [
 2     {
 3         'BACKEND': 'django.template.backends.django.DjangoTemplates',
 4         'DIRS': [os.path.join(BASE_DIR, 'Templates')],   # 模板'DIRS': [os.path.join(BASE_DIR, 'templates')],
 5         'APP_DIRS': True,
 6         'OPTIONS': {
 7             'context_processors': [
 8                 'django.template.context_processors.debug',
 9                 'django.template.context_processors.request',
10                 'django.contrib.auth.context_processors.auth',
11                 'django.contrib.messages.context_processors.messages',
12             ],
13         },
14     },
15 ]
 index.html
1
<html> 2 <head> 3 <title>{{title}}</title> 4 </head> 5 <body> 6 <h1>{{heatde_title}}</h1> 7 <div> 8 {{BodyHtml}} 9 10 {% for a_link_id in id %} 11 12 <li><a href="{% url 'Web:Show' a_link_id %}" >点我有惊喜,我的编号是:{{a_link_id}}</a></li> 13 {% endfor %} 14 </div> 15 </body> 16 </html>
 show.html
1
<html> 2 <head> 3 <title>111111</title> 4 </head> 5 <body> 6 <h1>{{question}}</h1> 7 <div> 8 {{question}} 9 10 </div> 11 </body> 12 </html>

可看官网:https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial03/

ok

当id 超过了list的最大值,就会404

进入虚拟环境,切换到项目根目录下,使用pip工具的freeze参数。

(venv) D:work2019for_testmysite>pip freeze > ./requirements.txt

将会把你虚拟环境下面的所有包都写入这个 

requirements.txt

他人如果拷贝了我们的代码,要安装第三方库依赖的话,只需要:

pip install -r requirements.txt


上传到git

对于settings.py文件有个问题,如果没有这个文件是无法运行Django项目的,但是settings中又可能包含很多关键的不可泄露的部分,比如SECRET_KEY:

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'b(&6i_$g2%8vh)ruu$)a9pkw+s-e&qj_e_#=@gnbo^48#gp_8a'

还有数据库的IP/Port、用户名和密码,邮件发送端的用户名和密码,这些都是绝对不能泄露的。

那怎么办呢?简单!复制settings文件,并重命名为settings.example.py文件,放在同一目录里,把敏感信息、密码等修改或删除。使用者看到这个文件名,自然会明白它的作用。



 喜欢就点个赞!!!文章写得真不容易。

原文地址:https://www.cnblogs.com/whatarey/p/11426945.html