Django
- 路由系统 url.py - 视图函数 views.py - 数据库操作 models.py - 模板引擎渲染 - HttpReponse(字符串) - render(request,'/path/a.html',{'name':'root'})
一、示例:用户基本CURD
1.数据库设计
id hostname ip port status
2.功能的实现
预备:
创建project django-admin startproject mysite 创建app cd mysite python manage.py startapp app01 配置模板路径 settings.py TEMPLATE DIRS: [os.path.join(BASE_DIR,'templates'),] 配置静态文件 settings.py STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
二、路由系统 urls.py
a. /^servers$ -> servers
b. url(r'^edit_user_new-(?P<nnid>\d+).html$', views.edit_user_new), c. url(r'^edit_user_new-(\d+).html$', views.edit_user_new,name='bbb'), {% url "bbb" 1 %} ==> edit_user_new-1.html d. url(r'^edit_user_new-(?P<nnid>\d+).html$', views.edit_user_new, name='nnn'), {% url "nnn" nnid=1 %} ==> edit_user_new-1.html e. 主urls.py url(r'^cmdb/', include('app01.urls')), url(r'^config/', include('app02.urls')), app01 urls.py ... app02 urls.py ...
三、视图函数 views.py
获取请求信息: request.POST {'username':'root'..} request.GET request.FILES request.method request.body = username=root;age=18;gender=male响应结果:
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'}, }