day19 django继续
Posted valiente
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day19 django继续相关的知识,希望对你有一定的参考价值。
上节回顾
django
- 路由系统:url.py
- 视图函数:views.py
- 模板引擎渲染
- HttpResonse(字符串)
- render(request,’index.html’) 渲染html给客户端
- 数据库操作:models.py
一、基本的数据库操作
小例子:实现数据的基本增删改查(CURD)
前戏:
1. 数据库设计
id hostname ip port status
2.实现功能
a.预备阶段
创建project :django-admin startproject mysite
创建app:cd mysite -----> python manager.py startapp app01
配置模板路径:settings.py -----> TEMPLATE
\'DIRS\': [os.path.join(BASE_DIR, \'templates\')]
配置静态文件:settings.py -----> STATICFILES
STATIC_URL = \'/static/\'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,\'static\')
)
b.请求URL----->def
c.views:数据库获取数据
详细步骤如下:
- 数据库的创建:
- 先创建类,也就相当于是数据库的表
- 字段:表的列
具体如下:
from django.db import models class UserInfo(models.Model): nid = models.AutoField(primary_key=True) #自增主键 username = models.CharField(max_length=32) #最大字符长度创建 pwd = models.CharField(max_length=64) age = models.IntegerField()
开始生成表:
D:\\project\\day19>python manage.py makemigrations
D:\\project\\day19>python manage.py migrate
前提:要注册app的名字(settings.py里注册)
注意事项:
如果连接mysql的话要手动创建数据库
修改settings.py下的database字段:
DATABASES = { \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'NAME\':\'dbname\', \'USER\': \'root\', \'PASSWORD\': \'xxx\', \'HOST\': \'\', \'PORT\': \'\', } }
还需要修改__init__.py文件(project下的)
import pymysql pymysql.install_as_MySQLdb()
url配置:
views配置
models配置:
server.html配置
路由系统
静态路由:
url(r\'^add_user$\', views.add_user),
动态路由:
url(r\'^edit_user_new-(?P<nnid>\\d+).html$\', views.edit_user),url(r\'^edit_user_new-(?P<nnid>\\d+).html$\', views.edit_user,name=\'mmm\'),{% url \'mmm\' nnid=obj.nid %} =====> edit_user_new-1.html多项目路由配置:主urls配置from django.conf.urls import url from django.conf.urls import include from django.contrib import admin urlpatterns = [ url(r\'^app01/\',include(\'app01.urls\')), url(r\'^app02/\',include(\'app01.urls\')), url(r\'^app03/\',include(\'app01.urls\')), ]从urls.py(需要创建)from django.conf.urls import url from django.conf.urls import include from django.contrib import admin from app03 import views urlpatterns = [ url(r\'^admin/\', admin.site.urls), url(r\'^test\', views.test), ]
视图函数
获取请求信息:
request.POST
request.GET
request.FILES
request.method
响应结果:
return HttpReponse(..)
return render(request,\'path/a.html\',{})
return redirect(\'http://www.baidu.com\')
Django数据库操作
1. 类 --> 数据库的表
字段 --> 列
对象 --> 一行数据
class UserInfo(models.Model):
nid = models.AutoField(primary_key=True)
username = models.CharField(max_length=32)
pwd = models.CharField(max_length=64)
age = models.IntegerField()
2. 根据app的models.py生成数据库表
python manage.py makemigrations
python manage.py migrate
PS: settings注册app名字
注意:
MySQL
- 手动创建库名
- settings.py 中配置
DATABASES = {
\'default\': {
\'ENGINE\': \'django.db.backends.mysql\',
\'NAME\':\'dbname\',
\'USER\': \'root\',
\'PASSWORD\': \'xxx\',
\'HOST\': \'\',
\'PORT\': \'\',
}
}
- Django默认链接MySQL:
- MySqlDB
- pymysql
在配置目录的init.py中:
import pymysql
pymysql.install_as_MySQLdb()
3. 数据库基本操作
a. 查
models.tb.objects.all()
models.tb.objects.filter(nid=1)
models.tb.objects.filter(nid=1).first()
b. 增
models.tb.objects.create(...)
obj = models.tb(...)
obj.save()
c. 删
models.tb.objects.all().delete()
models.tb.objects.filter(nid=1).delete()
d. 改
models.tb.objects.all().update(...)
models.tb.objects.filter(nid=1).update(...)
模板引擎
特殊规则:
- 1
{{k1}}
- 2
{% if a == 123 %}
{% else %}
{% endif %}
- 3
{% for item in LIST %}
{{item}}
{% endfor %}
- 4
# 索引:字典.k1 列表.1
- 5.自定义模板方法
- filter: 在if条件中做条件时
- simple_tag: 在页面仅显示内容时
- 6. extends
- 模板的继承
- 7. include
- 导入公共组件
Cookie
- 是用户浏览器上的一个键值对
- 设置超时时间
利用cookie可实现:
- 登录验证
- 页面显示条数
- 拖动位置..
两大忌讳:
- 敏感信息
- 简单
Session
- 放置在服务器端的键值对
session = {
\'asdfasdfasd\': {\'username\':\'hailong\'},
\'asdfasdfasdf\': {username:\'feinikesi\'},
}
以上是关于day19 django继续的主要内容,如果未能解决你的问题,请参考以下文章