Django 语法笔记

时间:2019-06-02 20:44:31   收藏:0   阅读:84

Django 语法

创建项目框架

django-admin startproject 项目名

创建子app

启动项目

项目目录结构

子app目录结构

配置settings.py

ORM映射

admin界面


python3 manage.py createsuperuser

#提供一个可读性更高的名字
def __str__(self):
   return self.name

Django-Hello

返回一个html页面

html模板语法

模板变量,模板标签

·为模板页面返回模板变量
   - {{ var }}  来自views.py的 var 变量
?
·编写视图函数:
- app -> views.py -> def(request)
   - 视图函数操作模型类表
       * 让视图函数返回所有学生
       * content = models.Student.objects.all()
       * return render(request,‘xxx.html‘,locals())
·编写映射关系: 路由映射关系是通过path函数找到对应视图
   - 路由映射,必须写末尾的斜杠
   - 路由查找,从上到下,匹配的到某一个,直接调用视图函数即可
   - 404:页面没找到 403:服务器拒绝 402:保留位 401:用户权限鉴定失败 400:错误的请求
·返回模板页面 == HTML页面
   - 配置模板页面的路径,设置一个路径在settings文件下,保存所有的静态目录,TEMPLATES
   - 视图函数使用render进行页面渲染并返回
·模板标签:
   - 必须要有闭合标签
   - 如:{% for i in 迭代对象 %} {% endfor %}  

静态资源:


#·css,js,mp3,audio -----》 路径查找: 绝对、相对
#- settings.py   ->    
   STATICFILES_DIRS=(os.path.join(BASE_DIR,‘static‘),)
?
#·在html中上方全局加载
- {% load static %}

让视图函数从数据库里拿数据

获取用户表单

视图函数判断请求方式 post

Django - mysql数据库

配置settings.py文件

# 找到DATABASES
DATABASES = {
   ‘default‘: {
       ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
       ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
  }
}
# 注掉上面 变更为
DATABASES = {
   ‘default‘: {
   ‘ENGINE‘: ‘django.db.backends.mysql‘, # 数据库引擎
   ‘NAME‘: "django_data", # 使用的数据库库名,该库需要手动创建
   "USER": "root", # 自己的用户名
   "PASSWORD": "chenkai", # 自己的数据库密码
   "HOST": "172.16.19.49", # 数据库主机地址 自己的本地ip
   "PORT": "3306"  # mysql的端口号
  }
}

主机“CK”不允许连接到此MySQL服务器的问题

解决方法:

进入MySQL的bin目录,执行如下命令:

#登录mysql
mysql -u 用户名 -p密码
# 进入mysql配置
user mysql;
# 变更配置
update user set host = ‘%‘ where user = ‘root‘;
# 给出 特权 Ps:让他可以这么做
flush privileges;
?

关系

一对一关联反向查询

查询:

多对一查询

shell

添加


from s_app import models
a1 = models.Teacher.objects.create(name=‘李老师‘)
a2 = models.Teacher.objects.create(name=‘贾老师‘)
a1
<Teacher: 李老师>
a2
<Teacher: 贾老师>
q1 = models.Student.objects.create(tea=a1,name=‘张小宁‘)
q2 = models.Student.objects.create(tea=a1,name=‘贾小璇‘)
q3 = models.Student.objects.create(tea=a2,name=‘李小括‘)
q4 = models.Student.objects.create(tea=a2,name=‘潘小飞‘)
q1
<Student: 张小宁>
q2
<Student: 贾小璇>
q3
<Student: 李小括>
q4
<Student: 潘小飞>
q1.tea.name
‘李老师‘

查:


c1 = models.Student.objects.filter(tea__name=‘贾老师‘)
c1
<QuerySet [<Student: 李小括>, <Student: 潘小飞>]>

c2 = models.Teacher.objects.filter(student__name=‘潘小飞‘)
c2
<QuerySet [<Teacher: 贾老师>]>

改:


# 把潘小飞调给李老师教
q4.tea.name = ‘李老师‘
q4.save()
q4.tea.name
‘李老师‘
把所有同学调给贾老师教
l = models.Student.objects.filter(tea=a1)
j = models.Student.objects.filter(tea=a2)
l.update(tea=a2)


 #删除张小宁
q1.delete()
 #批量删除贾老师所有学生(将一个数据集直接删除)
j.delete()

 

多对多

修改/外键关系操作

指定或批量 添加外键关系

指定或批量 删除外键关系

彻底删除

查询

 

cookie 和 session

COOKIE:

 

Django对于Cookie的处理方式

每个HttpRequest对象都对应一个COOKIES对象,该对象是字典形式.

request.COOKIES[‘session变量名‘]  # 获取

对COOKIES的设置通过一个页面HttpResponse对象的set_cookie


HttpResponse.set_cookie(key, value=‘‘, max_age=None, expires=None, path=‘/‘, domain=None, secure=None, httponly=False)
#语法: 页面.set_cookie(‘session变量名‘,session的值)   # 设置 session值


delete_cookie[‘session变量名‘]

 

防止篡改COOKIE


HttpResonse.set_signed_cookie(key, value, salt=‘‘, max_age=None, expires=None, path=‘/‘,
domain=None, secure=None, httponly=True)

Request.get_signed_cookie(key, salt=‘‘, max_age=None)

session

获取Session

session_data = request.session.get(Key)session_data = request.session[Key]

获取Session

ession_data = request.session.get(Key)session_data = request.session[Key]

删除Session

del request.seesion[Key]

request.session.clear()

request.session.flush()

INSTALLED_APPS = ( ...    ‘django.contrib.sessions‘,   ... )

 

原文:https://www.cnblogs.com/canhun/p/10964089.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!