Django框架
Posted zyphfwj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django框架相关的知识,希望对你有一定的参考价值。
Django框架
特点:
快速开发
安全可靠
超可伸缩性
使用templates时,要在setting当中加一个
‘DIRS‘: [os.path.join(BASE_DIR,‘templates‘)],
创建应用 python3 manage.py startapp app_name 可以将tamplates设置成为模板文件,会增加提示
实现一个请求
注册一个路由
urls中
-ulr
-参数1 匹配规则,正则
视图函数
对应的是views中的一个函数
没有括号
去views实现对应的视图函数
函数当中的第一个参数是request
永远记得返回Response
路由问题
1.在使用正则时,一段域名要加上小括号,还要引入re_path模块,每一组正则表达式组都表示一段路径。
2.404问题:要把setting中的debug改为false,以及ALLOWED_HOSTS = [‘*‘]
关闭进程:sudo fuser -k 8000/tcp
setting数据库配置
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘,
‘NAME‘: ‘user‘, #库名
‘USER‘: ‘root‘, #用户名
‘PASSWORD‘: ‘123456‘,
‘HOST‘: ‘127.0.0.1‘,
‘PORT‘: ‘3306‘,
}
}
模型配置
1,修改setting中的配置文件,DATABASES,在INSTALLED_APPS,加入应用名
2,在项目同名的目录下中的__init__.py中
import pymysql
pymysql.install_as_MySQLdb()
3.找到应用下的models.py
(1)生成迁移文件:在manager.py makemigrations
会在应用的migrations目录下生成一个迁移文件
(2)执行迁移
python3 manage.py migrate
例子:
def selectuser(request):
res = models.User.objects.all()#获取全部数据
print(res)
for i in res:
print(i.username)
return HttpResponse(‘查询数据‘)
def insertuser(request):
userinfo = models.User()
userinfo.username=‘xiaomengmeng‘
userinfo.password=‘123456‘
userinfo.email=‘xiaomengmeng@qq.com‘
userinfo.save()
return HttpResponse(‘插入数据‘)
def updateuser(request):
userinfo = models.User.objects.get(id=1)#获取单条数据
userinfo.username=‘xiaojiejie‘
userinfo.save()
return HttpResponse(‘修改数据 ‘)
def deluser(request):
userinfo = models.User.objects.get(id=1)
userinfo.delete()
return HttpResponse(‘删除数据‘)
HttpRequest对象
服务器接收到http的协议请求后,会跟据报文创建HttpRequest对象; 视图函数的的第一个参数是HttpRequest对象; 在Django.http模块中定义了HttpRequest对象的API
HTTPRequest对象属性
1.path:一个字符串,表示请求页面的完整路径,不包含域名
2.method:一个字符串,表示请求时用的HTTP方法,常用的有:‘GET‘,‘POST‘
encoding:一个字符串,表示提交的数据的编码方式
3.GET:一个类似于字典的对象,包含get请求方式的所有参数
4.POST:一个类似于字典的对象,包含POST请求的所有参数
5.FILES:一个类似于字典的对象,包含所有上传的文件
6.COOKIES:一个标准的Python字典,包含所有的cookie,键和值都是字符串
7.session:一个即可读又可写的类似于字典的对象,表示当前会话,只有当Django启用会话的支持才可用。
方法:is_ajax():如果是通过XMLHttpRequest发起的,则返回True
HTTPResponse对象
在Django.http模块定义了HttpResponse对象的API; Httprequest有Django自动创建,HTTPResponse有程序员创建
1,可以不使用模板,直接返回数据
from django.http import HttpResponse
def index(request):
return HttpResponse
2,调用模板,返回数据
return render(request,‘user/edit.html‘,{‘info‘:‘你好‘})
3,子类HTTPResponseredirect
重定向,服务端跳转
构造函数的第一个参数用来指定重定向的地址,可简写为redirect
from django.shortcuts import redirect
from django.core.urlresolvers import reverse
def index(request):
return redirect(reverse(‘myindex‘)
子类jsonresponse 返回json数据,一般用于异步请求,帮助用户创建json编码的响应 JsonResponse的默认Content-Type为application/json
from django.http import JsonResponse
def index2(requeset):
return JsonResponse({‘list‘: ‘abc‘})
cookies
cookie是服务器保存在客户端(浏览器上的小文本文件),他可以包含有关用户的信息 cookies最典型的应用是判定注册用户是否已经登录网站
设置cookie
获取当前的响应对象
response= HTTPResponse(‘cookie的设置’)
使用相应对象进行cookie的设置
response.set_cookie(‘a‘,‘abd‘)
返回响应对象
return response
获取cookie
读取
a = request.COOKIES.get(‘a‘,None)
if a:
return HTTPResponse(‘cookie:‘+a)
else:
return HTTPResponse(‘cookie不存在‘)
Template模板
在settin.py当中把模板路径添加进去 ‘DIRS‘:[os.path.join(BASE_DIR,‘templates‘)]
变量
1.变量输出语法:{{ var }}
当模板引擎遇到一个变量,将计算这个变量,然后将结果输出
2.变量名必须由字母,数字,下划线(开头不能是下划线)和点组成
3,当模板遇到点会按照下列顺序查询
- 字典查询:fpp[‘name‘]
- 属性或方法查询:fpp.bar
- 数字索引查询,foo[bar]
标签
语法{% tag %}
for 标签
{% for....in.... %}
逻辑
{% endfor %}
if标签
{ % if ... % }
逻辑1
{ % elif ... % }
逻辑2
{ % else % }
逻辑3
{ % endif % }
comment标签
{ % comment % }
多行注释
{ % endcomment % }
include:加载模板并以标签内的参数渲染
{ % include "base/index.html" % }
url:反向解析
{ % url ‘name‘ p1 p2 % }
csrf_token:这个标签用于跨站请求伪造保护
{ % csrf_token % }
3.过滤器
{{变量|过滤器}},例如:{{name|lower}},将name的值变为小写输出
- 使用管道夫号(|)来应用过滤器
模板继承
作用:
1.模板继承能够减少页面内容的重复定义,实现页面内容的重用
-
应用范围
网站的头部尾部,这些内容定义在父模板当中,子模板不需要重复定义
-
block标签:在父模板当中预留区域,在子模板中填充
-
extends继承:继承写在模板文件的第一行
例子:
- 定义父模板base.html
{% block block_name %}
定义默认值
{% endblock %}
- 定义子模板index.html
{% extends "base.html" %}
- 在子模板中使用block填充预留区域
{% block block_name %}
实际填充内容
{% endblock %}
以上是关于Django框架的主要内容,如果未能解决你的问题,请参考以下文章
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段