Django 开发基础流程
Django
-
Django有关的所有命令(下载,安装)
下载 pip3 install Django==1.11.9 创建 django-admin startproject mysite 启动python manage.py runserver 127.0.0.1:8000 创建python manage.py startapp 应用名
-
Django的settings中,用到的配置有哪些,他们的作用
BASE_DIR 路径 base_dir INSTALLED_APPS app installed_apps MIDDLEWARE 中间件 middleware TEMPLATES 模板 templates DATABASES 数据库 databases STATIC_URL 指定静态url static_url
-
Django使用mysql的流程
1.cmd创建数据库 mysql -uroot -p create database 库名 2.在settings中进行配置 DATABASES={ 'default':{ 'ENGINE': 'django.db.backends.mysql', 'NAME': 'bookmanager', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': '', } } 3.在项目init文件下 import pymysql pymysql.install_as_MySqldb() 4.在app下的models中写类(models.Model) 5.数据库迁移 python manage.py makemigrations #记录变更 python manage.py migrate #同步数据库
-
分别定义一个FBV和CBV,以及他们的路由
FBV url下 from app01 import views url(r'^login2/', views.xx), def xx(request): retrun CBV url下 from app01 import views url(r'^login2/', views.LoginView.as_view()), from django.views import View class loginview(View)
-
requests对象的方法和属性
属性: request.body 原始数据post request.GET GET请求提交的数据 request.POST POST请求提交的数据 request.META 请求头相关信息 Request.method 请求的方法类型 方法: request.get_host() ----->主机地址 request.get_full_path() ----->URL 路径 带参数
-
写出你知道的模板语法
1.变量 {{ 变量名 }} 2. .的用法 {{ name_list.0 }} #列表取值 {{ name_dict.name1 }} #字典取值 {{ p1.name }} #对象的属性 {{ p1.sing }} # 对象的方法 3. 过滤器 {{ 变量名|filter:参数 }} 4.tags {% for user in user_list %} {{ user.name }} {% endfor %} {% if 条件 %} 操作
-
写出母版和继承的方法
1. 创建一个 HTML 文件当做母版 'base.html' ,母版中将多个页面的重复代码提取出来 2. 在母版中定义多个block ,来区分不同页面的不同内容 3.在子页面中继承母版 {% extends 'base.html' %} 4.在block 中写自己页面独特的内容,用来替换模板中block中的内容 {% block content %} 母版页面 {% endblock %} {% extends "base.html" %} {% block title %} xxx {% endblock %}
-
写出一个自定义filter的步骤
自定义过滤器 1. app应用文件夹中创建一个templatetags文件件,必须是这个名字 2. templatetags文件夹中创建一个 xx.py文件,文件名字随便起 3. 创建自定义过滤器 from django import template register = template.Library() #register固定的名字,注册器 @register.filter def oo(v1): #不带参数的过滤器 s = v1 + 'xxoo' retrun s {% load xx %} {{ values|oo }} {{ values|oo:‘参数’}}
-
.如何在URLconf中给url命名?在视图和模版中如何使用url反向解析?请写出所有情况
urls.py: url(r'^author_list/$',views.author_list,name = 'author_list'), url(r'^home/([0-9]{4})/([0-9]{2})/',views.home,name = 'home'), url(r'^home/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/',views.home,name = 'home'), 视图中反向解析: from django.urls import reverse reverse("author_list") -----> '/author_list/' 无名分组: reverse('home',args=('1999','06')) ---->'/home/1999/06/' 有名分组: reverse('home',kwargs = {'year':'1998','month':'06'}) ---->'/home/1998/06/' 模板中反向解析: {% url 'author_list' %} ---->'/author_list/' 无名分组: {% url 'home' '2000' '09' %} 有名分组: {% url 'home' '2000' '09' %} {% url 'home' month = '09' year = '1898' %}
-
cookie和session是什么?为什么要使用它们?
1.cookie
定义: cookie是服务器让浏览器保存在浏览器本地的键值对
原因: http 是无状态,每次请求之间没有任何关系,无法保存状态. 使用cookie 来保存
一些状态
2.session
定义: session 是保存在服务器上的键值对,依赖于cookie
原因:
cookie 在浏览器端 不太安全
cookie 长度受限 session长度不受限
-
Django中操作cookie和session的方法有哪些
1.cookie 1.设置 cookie rep = redirect("/index/") rep.set_cookie(key,value,max_age = 1000) rep.set_signed_cookie(key,value,max_age = 1000, salt = '') 2.获取 cookie request.COOKIES['key'] request.COOKIES.get('key') --->推荐的取法 request.get_signed_cookie('key',salt ='') 3.删除 cookie rep.delete_cookie('key') 2.session 1.设置session request.session['key'] = value request.session.setdefault(key,value) ---->存在就不设置 2.获取session request.session['key'] request.session.get(key,'') 3.删除 session request.session.pop(key) ----->删除某一个键值对 del request.session['key'] request.session.delete() -->删除所有的session 键值对 request.session.flush() -->删除所有的session 键值对,删除了 cookie 4.设置超时时间 request.session.set expiry() 5.清除当前过期的 session request.session.clear_expired()
-
Django的中间件是什么?写出process_request和process_response以及process_view三个方法的执行时间,执行顺序和不同的返回值不同的流程
1.process_request(self.request) 执行时间 :请求来 先执行,在视图之前 执行顺序: 按照注册顺序执行 返回值: 返回值是None 正常往后走 返回值是 HttpResponse 对象 后面的不在走, 直接执行当前中间的 process_response方法 2.process_response(self,request,response) 执行时间: 视图函数之后 执行顺序:安装注册顺序倒序执行 返回值: HttpResponse对象 3.process_view(self,request,view_func,view_args,view_kwargs) 执行时间: 在视图之前 ,process_request之后 执行顺序: 按照注册顺序 顺序执行 返回值: None 正常往后走 HttpResponse 对象 后面的中间件 process_view方法、视图不执行 走所有中间的 process_response方法
-
请写出jQuery发送ajax请求,能通过Django的csrf校验的两种方法
给data中加csrfmiddlewaretaken
data:{'csrfmiddlewaretoken':$('[name="csrfmiddlewaretoken"]').val()
date:{'csrfmiddlewaretoken':'{{ csrf_token }}'}
加请求头 x-csrftoken
headers:{
'x-csrftoken':$('[name="csrfmiddlewaretoken"]').val(),
}