django-1创建项目创建app设置setting、urls、templates、views等

1. python -m django --version

查看版本 1.11.4

 

在需要创建项目的目录下执行:

2. django-admin startproject myblog => 创建名为myblog的项目

 

在项目的manage.py 同级目录下运行

3. python manage.py runserver 9999 =>以端口号9999打开server,通过浏览器127.0.0.1:9999访问(默认8000端口)

 

项目myblog目录分析:

myblog------wsgi.py => python服务器网关接口,与web服务器通信的关键,平时不会改动

    -----urls.py 每个页面的配置,或每个应用的根路径配置

    -----setting.py 非常重要,核心部分,很多内容要在其中改动

    -----__init__.py 有这个文件,myblog可以作为引用的模块    

 

 

setting.py文件结构分析

BASE_DIR  项目根目录
SECRET_KEY 创建项目时自动生成的 可无视
DEBUG 不要在生产环境打开
ALLOWED_HOSTS 如果将debug 改为false,将allow_hosts改为localhost,那么通过ip访问就报错
INSTALLED_APPS 在该项目下创建的任何应用,都要把名字加入这个列表中   比如4. 创建的blog 需要将名字加入
ROOT_URLCONF ='myblog.urls'  貌似自动生成的吧
TEMPLATES 模板配置 htmlm文件,
      使用了django模板语言 Django Template Language DTL
      叫模板引擎
      在第一行:'BACKEND': 'django.template.backends.django.DjangoTemplates'
      也可以使用第三方引擎 Jinja2


WSGI_APPLICATION 无视 与网关配置相关的
DATABASES 默认使用DB为db.sqlite3

STATIC_URL 静态文件  html css等

在项目的manage.py 同级目录下运行

4. python manage.py startapp blog => 创建一个名为blog的应用

 

项目myblog下的应用:blog结构分析:

blog ------migrations => 数据迁徙 django自动生成

   ------admin => 当前应用的后台管理系统配置

   ------ apps => 当前应用的配置

       ------ models => 数据表

       ------ tests => 自动化测试模块

       ------ views =>执行响应的逻辑代码,项目中大部分代码在此

      每个函数接收一个响应参数,再返回一个响应参数

      每个函数对应一个url

      去 myblog的urls.py 中添加函数同名对应的url,

      然后 python manage.py runserver 就可以在浏览器中访问刚才配置的url,可以看到view的函数返回内容了

 

5. 在setting.py 文件中加入到 install_apps列表中

6. 在app:blog的根目录下创建文件夹:templates

7. 在myblog/blog/templates下创建html文件:index.html

8. 在app:blog 的 view.py 中 添加函数index2, return render(request, 'index.html', 后台数据)

    其中,render:渲染页面

       request, 接收的响应参数

                    index.html 为html文件字符串

                     后台数据:支持dict类型参数,key在前端(html中,用双大括号{{}},不显示在终端页面),value是后台内容,最终显示在终端页面的

8.1  在项目myblog 的 urls.py 中,引入了include,可以引用app blog 和 blog2 的urls, 

url(r'^blog/', include('blog.urls')),
url(r'^blog2/', include('blog2.urls')),

8.2 app blog 和 blog2 的urls.py 里面的函数路径可以为空,用正则匹配, 注意最后的斜杠写法,为空写成^$

url(r'^index/$', views.index),
url(r'^myblog/$', views.myblog),

9 添加新的应用app:blog2  其下也有index.html ,setting中添加好应用名字,urls中配置好路径,

  发现  只能顺序找到第一个blog的templates/index.html, 

   即 : 不同app的templates 目录下同名html文件会造成冲突

 解决办法: 在templates文件夹下,创建应用名字相同的文件夹

       并在应用app 的 views.py文件的相关函数,第二个参数html文件字符串前加上app名字目录

  

def index(request):
return render(request,'blog/index.html',{'hello':'开花花🌺'})

 before: myblog/blog/templates/index.html

    myblog/blog2/templates/index.html

 after :  myblog/blog/templates/blog/index.html

      myblog/blog2/templates/blog2/index.html

 






 

posted @ 2017-09-11 17:26  vivi~  阅读(643)  评论(0编辑  收藏  举报