博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day-19 django2
阅读量:6511 次
发布时间:2019-06-24

本文共 4162 字,大约阅读时间需要 13 分钟。

day19

1. Django的命令

1. 下载安装
pip install django==1.11.15
2. 创建项目
django-admin startproject 项目名
3. 创建APP
cd 项目目录下
python manage.py startapp app01
4. 启动项目
python manage.py runserver # 127.0.0.1:8000
python manage.py runserver 0.0.0.0:80
python manage.py runserver 80 # 127.0.0.1:80
5. 数据库相关
python manage.py makemigrations # 检测model的变化 把变更记录记录下来
python manage.py makemigrations app01 # 检测model的变化 把变更记录记录下来
python manage.py migrate # 将变更记录同步到数据库中
2. setting的配置
1.
INSTALLED_APPS=[
'app01.apps.App01Config',
'app01'
]
2. TEMPLATES
'DIRS': [os.path.join(BASE_DIR, 'templates')]
3. DATABASES
ENGINE mysql
NAME: 数据库的名字
USER: 用户名
PASSWORD: 密码
HOST: '127.0.0.1'
PORT: 3306
注意:
在与settins同级目录下的__init__.py 中写代码:
import pymysql
pymysql.install_as_MySQLdb()
4. 静态文件相关
STATIC_URL = '/static/' # 别名
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static'),
]

1. 今日内容

1. 路由系统进阶:https://www.cnblogs.com/maple-shaw/articles/9282718.html

- 动态路由
- URL命名和反向解析
url(r'^publisher_list/$', views.publisher_list, name='publisher'),
命名分组
url(r'^pub/edit/(?P<pk>\d+)/$', views.publisher_edit,name='publisher_edit'),
模板中使用:
{% url 'publisher'%} ——》/app01/publisher_list/
命名分组
{% url 'publisher_edit' publisher.id %}
{% url 'publisher_edit' pk=publisher.id %}
视图中使用:
from django.urls import reverse
reverse('publisher')
命名分组
reverse('publisher_edit',args=(2,))
reverse('publisher_edit',kwargs={'pk':5})
指定namespace='app01'
反向解析的时候 给name前面加上namespace ——》 namespace:name
2. 视图函数进阶: https://www.cnblogs.com/maple-shaw/articles/9285269.html
- FBV (function based view)
- CBV (class based view)
定义:
class AddPublisher(View):
def get(self,request):
pass
def post(self,request):
pass
使用:
url(r'^pub/add/$', views.AddPublisher.as_view(),name='publisher_add'),

CBV的流程
1. AddPublisher.as_view() ——》 view函数
2. 请求到来的时候 执行view函数
1. AddPublisher实例化 对象 ——》 self
2. self.request = request
3. 执行self.dispatch(request, *args, **kwargs)
1. 通过反射 获取到 get post 方法 ——>handler
2. handler() ——》 获得HttpResponse对象
装饰器的使用:
FBV: 正常使用 给函数上加装饰器
CBV:
from django.utils.decorators import method_decorator
1. 加在方法上
@method_decorator(timer)
def get(self, request):
2. 加在dispatch方法上
@method_decorator(timer)
def dispatch(self, request, *args, **kwargs):
3. 加在类上
@method_decorator(timer,name='post')
@method_decorator(timer,name='get')
class AddPublisher(View):
1. 直接用装饰器
(<app01.views.AddPublisher object at 0x0000023DE99E57B8>, <WSGIRequest: GET '/app01/pub/add/'>)
<function AddPublisher.get at 0x0000023DE992ED08>
2. 使用method_decorator
(<WSGIRequest: GET '/app01/pub/add/'>,)
<function method_decorator.<locals>._dec.<locals>._wrapper.<locals>.bound_func at 0x0000023372154EA0>
- request
request.method 请求方式 GET POST
request.GET URL上的参数
request.POST POST请求提交的数据
request.path_info 路径信息 不包含ip和端口 不包含URL参数 /app01/pub_list/
request.FILES 上传的文件
request.get_host() IP:端口
request.get_full_path() 带参数的路径
- response
HttpResponse('字符串')
render(request,'html文件名',{}) 完整的页面
redirect(地址) '/zz/' 'https://v3.bootcss.com/css/#forms' Location :'/zz/'
from django.http import JsonResponse
JsonResponse # Content-Type: application/json
JsonResponse(data_list,safe=False) 传非字典类型
模板引擎进阶: https://www.cnblogs.com/maple-shaw/articles/9333821.html
- 标签
- 过滤器
- 模板
1. 把多个页面公共的部分提取出来 写成一个母版 HTML文件 'base.html'
定义block
2. 写子页面
{% extends 'base.html' %}
重写母版中定义的block块
3. 注意事项:
1. {% extends 'base.html' %}写在第一行,'base.html'是字符串
2. 在母版中定义多个block块 css js
3. 子页面的内容写在block中
- CSRF
CSRF 跨站请求伪造
Django有跨站请求伪造的保护机制 依赖中间件
'django.middleware.csrf.CsrfViewMiddleware',
{% csrf_token %}
效果:
在form表中加了一个隐藏的input标签 name csefmiddlewaretoken value 64长度的字符串
结果:
form表单可以提交POST请求
- 静态文件相关
- {% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7/css/bootstrap.css' %}"
<link rel="stylesheet" href="{% static 'css/dsb.css' %}">}

<link rel="stylesheet" href="{% get_static_prefix %}bootstrap-3.3.7/css/bootstrap.css">

<link rel="stylesheet" href="{% get_static_prefix %}css/dsb.css">

ORM单表查询13条+外键操作(一对多):

字段和参数: https://www.cnblogs.com/maple-shaw/articles/9323320.html
查询操作:https://www.cnblogs.com/maple-shaw/articles/9403501.html

cookie&session:https://www.cnblogs.com/maple-shaw/articles/9502602.html

 

 

转载于:https://www.cnblogs.com/junyingwang/p/9809708.html

你可能感兴趣的文章
TableStore: 海量结构化数据分层存储方案
查看>>
Unity 4.x游戏开发技巧集锦(内部资料)
查看>>
自适应网页设计
查看>>
java SpringUtil获取bean
查看>>
赛门铁克开启“容灾即服务”时代
查看>>
复杂度归纳--小结
查看>>
跨越企业的“中等收入陷阱”
查看>>
luogu P1280 尼克的任务 序列DP
查看>>
sys.check_constraints
查看>>
眠眠interview Question
查看>>
RPC-client异步收发核心细节?
查看>>
#define WIN32_LEAN_AND_MEAN 的作用
查看>>
仿余额宝数字跳动效果 TextCounter
查看>>
你必须知道的.net学习总结
查看>>
Axure8.0 网页 or App 鼠标滚动效果
查看>>
大家好,新年快乐。
查看>>
labview如何弹出提示窗口_LabVIEW开发者必读的问答汇总,搞定疑难杂症全靠它了!...
查看>>
mysql批量数据多次查询数据库_mysql数据库批量操作
查看>>
jquery 乱码 传参_jquery获取URL中参数解决中文乱码问题的两种方法
查看>>
JDBC_MySQL_jdbc连接mysql_MySQL
查看>>