zoukankan      html  css  js  c++  java
  • 学习使用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文件,放在同一目录里,把敏感信息、密码等修改或删除。使用者看到这个文件名,自然会明白它的作用。



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

  • 相关阅读:
    学号20145220《信息安全系统设计基础》第10周学习总结
    补发周四的博客。对之前的知识复习了一遍,因为要闭卷考试。
    jsp中文乱码
    redis做成windows服务
    poi导出excel打开文件时部分内容有问题
    mysql删除数据表时:Cannot delete or update a parent row: a foreign key constraint fails
    Oracle使用foreach批量操作数据
    Oracle数据库clob类型转String类型
    MAVEN配置多个仓库
    idea中maven项目明明有jar包还是爆红
  • 原文地址:https://www.cnblogs.com/whatarey/p/11426945.html
Copyright © 2011-2022 走看看