python-django文档学习(一)

#django
###简单项目建立流程
1.新建虚拟环境
mkvirtualenv 虚拟环境名称
pip install django
2.建立项目
django-admin startproject 项目名
3.建立app
python manage.py startapp 应用名
4.建立appviews函数、urls.py文件设置url路由映射
导入djangohttp模块的 HttpResponse方法
导入djangourls模块的 path方法
5.在跟文件中的urlconf指定建立的urls.py模块
导入djangourls模块的 include方法
6.建立appmodels.py
每个类继承models.Model
类中的类变量,它们都表示模型里的一个数据库字段。每个字段都是 Field 类的实例。
7.安装app到项目
在项目的settings.py文件中找到INSTALLED_APPS列表
将建立的app添加进去
例如:
INSTALLED_APPS = [
'polls.apps.PollsConfig',
]
应用名在应用的apps.py
8.生成迁移
编辑 models.py 文件,改变模型。
运行 python manage.py makemigrations 为模型的改变生成迁移文件。
运行 python manage.py migrate 来应用数据库迁移。
9.创建超级用户
python manage.py createsuperuser
输入用户名、邮箱、密码
10.运行
python manage.py runserver
11.建立投票应用
在应用的admin文件下声明
说明Questions需要被管理
12.建立视图
重点:代码优化通用视图
当编写一个 Django 应用时,应该先评估一下通用视图是否可以解决问题,应该在一开始使用它,而不是进行到一半时重构代码。
13.测试编写
14.模板、静态文件
模板文件
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 添加模板文件目录
'DIRS': [os.path.join(BASE_DIR,'template')],
# 'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
静态文件
# 建立静态文件
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]


15.设置后台表单模板


###基础项目架构
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py

最外层的:file: mysite/ 根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。
manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。
里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls).
mysite/__init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
mysite/settings.pyDjango 项目的配置文件。
mysite/urls.pyDjango 项目的 URL 声明,就像你网站的目录
mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
###应用架构
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py

###path函数
函数 path() 具有四个参数,两个必须参数:route view,两个可选参数:kwargs name
route 是一个匹配 URL 的准则(类似正则表达式)。
view Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被捕获的参数以关键字参数的形式传入。
kwargs 任意个关键字参数可以作为一个字典传递给目标视图函数。
name URL 取名 可以在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。
###数据库配置
mysite/settings.py 。这是个包含了 Django 项目设置的 Python 模块。
这个配置文件使用 SQLite 作为默认数据库。
然后改变设置文件中 DATABASES 'default' 项目中的一些键值:
ENGINE -- 可选值有 'django.db.backends.sqlite3''django.db.backends.postgresql''django.db.backends.mysql',或 'django.db.backends.oracle'。其它 可用后端。
NAME - 数据库的名称。如果使用的是 SQLite,数据库将是你电脑上的一个文件,在这种情况下, NAME 应该是此文件的绝对路径,包括文件名。默认值 os.path.join(BASE_DIR, 'db.sqlite3') 将会把数据库文件储存在项目的根目录。
如果你不使用 SQLite,则必须添加一些额外设置,比如 USER PASSWORD HOST 等等。
编辑 mysite/settings.py 文件前,先设置 TIME_ZONE 为自己时区。
settings.py文件头部的 INSTALLED_APPS 设置项。包括了在项目中启用的所有 Django 应用。
通常, INSTALLED_APPS 默认包括了以下 Django 的自带应用:
django.contrib.admin -- 管理员站点。
django.contrib.auth -- 认证授权系统。
django.contrib.contenttypes -- 内容类型框架。
django.contrib.sessions -- 会话框架。
django.contrib.messages -- 消息框架。
django.contrib.staticfiles -- 管理静态文件的框架。
输入 python manage.py migrate 命令
migrate 命令检查 INSTALLED_APPS 设置,为其中的每个应用创建需要的数据表,

Django 里写一个数据库驱动的 Web 应用的第一步是定义模型 - 也就是数据库结构设计和附加的其它元数据。
在本应用中需要创建两个模型:问题 Question 和选项 ChoiceQuestion 模型包括问题描述和发布时间。Choice 模型有两个字段,选项描述和当前得票数。每个选项属于一个问题。
makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次迁移。
####models.py配置
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
###后台管理
python manage.py createsuperuser
输入用户名、邮箱、密码
建立超级用户
建立需要管理的模型
'''
说明Questions需要被管理
'''
from .models import Question
admin.site.register(Question)

###视图
Django 中的视图的概念是「一类具有相同功能和模板的网页的集合」。
在一个博客应用中,可能会创建如下几个视图:
博客首页——展示最近的几项内容。
内容详情——详细展示某项内容。
以年为单位的归档页——展示选中的年份里各个月份创建的内容。
以月为单位的归档页——展示选中的月份里各天创建的内容。
以天为单位的归档页——展示选中天里创建的所有内容。
评论处理器——用于响应为一项内容添加评论的操作。
在投票应用中,需要下列几个视图:
问题索引页——展示最近的几个投票问题。
问题详情页——展示某个投票的问题和不带结果的选项列表。
问题结果页——展示某个投票的结果。
投票处理器——用于响应用户为某个问题的特定选项投票的操作。
Django 中,网页和其他内容都是从视图派生而来。
每一个视图表现为一个简单的 Python 函数(或者说方法,如果是在基于类的视图里的话)。
Django 将会根据用户请求的 URL 来选择使用哪个视图(更准确的说,是根据 URL 中域名之后的部分)。
每个视图必须要做的只有两件事:返回一个包含被请求页面内容的 HttpResponse 对象,或者抛出一个异常,比如 Http404
####render()函数
载入模板,填充上下文,再返回由它生成的 HttpResponse 对象
参数(request,模板文件,信息)

####get_object_or_404()函数
尝试用 get() 函数获取一个对象,如果不存在就抛出 Http404 错误是一个普遍的流程。所以django提供了get_object_or_404()函数

#### get_list_or_404() 函数
其工作原理和 get_object_or_404() 一样,除了 get() 函数被换成了 filter() 函数。如果列表为空的话会抛出 Http404 异常。

####软连接
{# 硬编码 #}
{# <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>#}
<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>
####命名空间
在一个真实的 Django 项目中,可能会有五个,十个,二十个,甚至更多应用。Django 使用命名空间来分辨重名的 URL
添加在urls.py
app_name = 'polls'
现在url
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>

####form表单
POST 表单(它具有修改数据的作用),所以我们需要小心跨站点请求伪造。 Django 有一个用来防御的非常容易使用的系统。
简而言之,所有针对内部 URL POST 表单都应该使用 {% csrf_token %} 模板标签。
####request.post[传入的参数名]
获取以post方式从前台传入的数据
####request.get[传入的参数名]
获取以get方式从前台传入的数据
####reverse()函数
重定向函数将页面重定向到指定页面
##代码优化通用视图
通用视图将常见的模式抽象化,可以在编写应用时甚至不需要编写Python代码。
每个通用视图需要知道它将作用于哪个模型。 这由 model 属性提供。
template_name 属性是用来告诉 Django 使用一个指定的模板名字,而不是自动生成的默认名字。
建立模板文件时都带有包含变量的 context
对于 DetailView , 相应变量会自动提供—— 因为我们使用 Django 的模型, Django 能够为 context 变量决定一个合适的名字。
对于 ListView, 自动生成的 context 变量是 模型名_list。使用context_object_name 属性,来覆盖原有名称。

####generic.ListView
显示一个对象列表
####generic.DetailView
显示一个特定类型对象的详细信息页面
DetailView 期望从 URL 中捕获名为 "pk" 的主键值,所以在url映射中把 question_id 改成 pk

posted @ 2020-03-29 16:33  momingQI  阅读(335)  评论(0)    收藏  举报