003 Django学习之项目结构介绍

来源:互联网 发布:怎么创建自己软件 编辑:程序博客网 时间:2024/06/09 23:58

项目结构介绍

manage.pyapp01:(这个是自己的APP应用)    __init__.py    settings.py    urls.py    wsgi.py

manage.py

  1. 与项目进行交互的命令行工具集的入口
  2. 项目管理器
  3. 执行Python manage.py来查看所有命令
启动一个服务器
  1. python manage.py runserver [9999]

app01目录

  1. 项目的一个容器
  2. 包含项目的最基本的一些配置
  3. 目录名称不建议修改,需要修改配置文件

wsgi.py

  1. WSGI:Python服务器网关接口

urls.py

  1. URL配置文件
  2. Django项目中所有地址页面都需要我们自己去配置其URL

setting.py

  1. BASE_DIR:项目目录
  2. SECRET_KEY:秘钥
  3. DEBUG:调试模式
  4. ALLOWED_HOSTS:允许访问的地址,不写默认所有
  5. INSTALLED_APPS:自己创建的应用必须写入这里,要不然不识别
  6. MIDDLEWARE:中间件(一些工具集)
  7. ROOT_URLCONF:URL的根文件的配置文件,指向的是urls.py这个文件
  8. TEMPLATES:模板的配置
  9. WSGI_APPLICATION:跟WS相关的一律先不管
  10. DATABASES:数据库配置、默认用的SQLite3
  11. AUTH_PASSWORD_VALIDATORS:密码认证
  12. LANGUAGE_CODE:语言
  13. TIME_ZONE:时区
  14. USE_I18N
  15. USE_L10N
  16. USE_TZ
  17. STATIC_URL:静态文件地址JS等

init.py

  1. 模块文件,有了这个,app01目录就变成了一个模块
  2. Python声明模块的文件
  3. 内容默认为空

创建应用

  1. 打开命令行,进入项目中的manage.py同级目录
  2. 命令行输入:python manage.py startapp app01(应用名不能和项目名一致)
  3. 把应用名添加到settings.py中的INSTALLED_APPS里(重点)

blog目录介绍

migrations    __init__.py__init__.pyadmin.pyapps.pymodels.pytests.pyviews.py

migrations

  1. 数据移植(迁移)模块(和数据库有关)

admin.py

  1. 该应用的后台管理系统配置

apps.py

  1. 当前应用的一些配置Django1.9之后才会用到

models.py

  1. 数据模型模块
  2. 使用ORM框架(Django封装好了)
  3. 类似于MVC中的Models

tests.py

  1. 自动化测试模块
  2. Django提供了自动化测试功能
  3. 在这里编写测试脚本(语句)

views.py

  1. 执行响应的代码所在的模块
  2. 代码逻辑处理的主要地点
  3. 项目中大部分的代码在这里编写

创建第一个页面(响应)

在blog.views中编写代码返回响应

from django.shortcuts import  renderfrom django.http import HttpResponsedef index(request):    return HttpResponse("Hello World!")----------------------------每一个响应对应一个函数,函数必须返回一个响应函数必须存在一个参数,一般约定为request每一个响应(函数)对应一个URL

在urls.py中配置URL

import blog.views as bv'''第一个参数用正则:第二个参数用函数名,每一个url都对应一个函数'''urlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^index/', bv.index),]----------------------------每一个URL都以url的形式写出来url函数放在urlpatterns列表中url函数三个参数:URL(正则),对应方法,名称

第二种配置url方式

from django.conf.urls import includeurlpatterns = [    url(r'^blog/', include('blog.urls')),]另外在blog目录下创建一个文件urls.py文件from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'^index/$', views.index),# 约束空字符串,注意斜杠的问题]注意事项1. 根urls.py针对APP配置URL名称,是该APP所有URL的总路径2. 配置URL时注意正则表达式结尾符$和/的问题

Templates介绍

什么是 Templates

  1. HTML文件
  2. 使用了Django模板语音(Django Template Language,DTL语言)
  3. 可以使用第三方模板(如Jinja2)

如何修改模板引擎

  1. 在settings.py文件中找到 TEMPLATES ,修改BACKEND就可以了

开发第一个 Templates

  1. 在项目根目录下创建一个叫Templates的目录
  2. 在该目录下创建HTML文件
  3. 然后在views中返回一个render

render

from django.shortcuts import renderfrom django.http import HttpResponsedef index(request):    return render(request,"index.html")

DTL初步使用

  1. render()函数中支持一个dict类型的参数
  2. 该字典是后台传递到模板的参数,键位参数名
  3. 在模板中使用{{参数名}}来直接使用

解决index重名问题(由于导入APP名字的先后顺序导致的问题)

  1. 在APP的Templates目录下创建以APP名为名称的目录
  2. 然后将HTML文件都放入这个文件中
  3. 最后修改views第二个参数,HTML文件放在项目文件夹下

Models

  1. 通常,一个Models对应数据库的一张表
  2. Django中的Models以类的形式表现
  3. 它包含了一些基本的字段以及数据的一些行为

ORM

  1. 对象关系模型映射
  2. 实现了对象与数据库之间的映射
  3. 隐藏了数据访问的细节,不需要编写SQL语句

编写Models

  1. 在应用根目录下创建一个Models.py,并引入Models模块
  2. 创建类,继承models.Model,该类即是一张数据表
  3. 在类中创建字段

生成数据表

  1. 命令行中进入manage.py同级目录
  2. 执行python manage.py makemigrations [app名(可选)] 不写默认项目下所有应用都会进行数据迁移
  3. 再执行python manage.py migrate 数据迁移

查看生成的数据表

  1. Django会自动在app/migrations/目录下生成移植文件
  2. 执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句

配置Admin(Django自带后台管理系统)

  1. python manage.py createsuperuser 创建超级用户
  2. 用户名随便取
  3. 邮箱随便
  4. 密码必须8位以上
  5. localhost:8000/admin admin入口
  6. 修改settings.py中LANGUAGE_CODE = “zh_Hans” 管理界面变成中文

配置应用

  1. 在应用admin.py中引入自身的models模块(或里面的模型类)
  2. 编辑admin.py:admin.site.register(models.Article)

admin.py中的代码

from .models import Articleadmin.site.register(Article)

修改数据默认显示名称

  1. Models–>Article类中添加str方法
  2. return …

个人博客开发

  1. 博客主页面
  2. 博客文章内容页面
  3. 博客撰写页面

主页面内容

  1. 文章标题列表,超链接
  2. 发表博客按钮(超链接)

列表编写思路

  1. 去除数据库中所有的文章对象
  2. 将文章对象们打包成列表,传递到前端
  3. 前端页面把文章以标题超链接的形式逐个列出

模板For循环

{% for xx in xxs %}HTML语句{% endfor %}

文章内容

  1. 标题
  2. 文章内容
  3. 修改文章的按钮(超链接)

URL传递参数

  1. 参数卸载响应函数中request后面,可以有默认值
  2. URL正则表达式:r”^/article/(?P[0-9]+)/$”
  3. URL正则中的组名必须和参数名一致,不然会报错

Django中的超链接

超链接目标地址

  1. href后面是目标地址
  2. template中可以用”{% url ‘app_name:url_name’ param %}”
  3. 其中app_name和url_name都在url中配置

第二种URL配置方式

  1. 根urls,写在include()的第二个参数位置,namespace=”blog”
  2. 应用下则写在url()的第三个参数位置,name=”article”
  3. 这两种配置方式主要取决于是否使用include引用了另一个url配置文件

页面内容

  1. 标题编辑栏
  2. 文章内容编辑区域
  3. 提交按钮

编辑响应函数

  1. 使用request.POST[‘参数名’]获取表单数据
  2. models.Article.objects.create(title,content)创建对象

两个编辑页面的区别

  1. 新文章为空,修改文章有内容
  2. 修改文章页面有文章对象
  3. 文章的ID

补充内容

Templates过滤器

  1. 写在模板中,属于Django模板语言
  2. 可以修改模板中的变量,从而显示不同的内容

怎么使用过滤器

{{value | filter}}例子:{{list_nums | length}}过滤器可叠加:{{value | filter1 | filter2 | ...}}

Django Shell

  1. 一个Python的交互式命令行程序
  2. 它自动引入了我们项目环境
  3. 我们可以使用它与我们的项目进行交互

怎么使用Django Shell

  1. python manage.py shell
  2. from blog.models import Article
  3. Article.objects.all() 返回值是Article的str返回的数据

有什么用?

  1. 我们可以使用Django shell来进行一些调试工作
  2. 测试未知的方法

Admin加强

创建admin配置类

  1. class ArticleAdmin(admin.ModelAdmin)
  2. 注册admin.site.register(Article,ArticleAdmin)

创建类的代码

from django.contrib import adminfrom .models import Articleclass ArticleAdmin(admin.ModelAdmin):    list_display = ('title',"content",'pub_time')admin.site.register(Article,ArticleAdmin)
原创粉丝点击