学习Django框架的第二天笔记
MVC / MTV设计模式
-
模板 template
-
模板的配置
setting.py
TEMPLATE = [
DIRS = […模板的绝对路径1,路径2,…]
…
]
DEBUG = True/False -
模板的加载方法:
- from django.shortcut import render
render(request, ‘模版的相对路径名’, 数据字典)
render 返回的是一个HttpResponse对象 - from django.template import loader
t = loader.get_template(‘模版的相对路径名’)
html = t.render(数据字典)
return HttpResponse(html)
- from django.shortcut import render
-
模板的语法:
(1)模板的变量
{{ 变量名 }}
{{ 变量名.1 }}
{{ 变量名.key}}
{{ 对象.方法 }}
(2)模板的控制标签
if 标签
{% if 条件表达式 %}
{% elif … %}
{% else %}
{% endif %}
for 标签
{% for x in 可迭代对象 %}
… {{ forloop.counter }}
{% empty %}
{% endfor %}
cycle 标签
{% cycle 值1 值2 值3 %}
(3)注释
{# #}
{% comment %}
{% endcomment}
(4) 模板的过滤器
{{ 变量 | 过滤器1: 参数1 | }}
转义
{% autoescape on %}
{{ 变量 }}
{% endautoescate %}
(5)模板的继承
{% block 块名 %}{% endblock %}
继承语法
{% extends ‘父模板的名称’ %}
{# 覆盖block #}
{% block 块名 %}
子模板的新内容
{% endblock %}
(6)反向解析
url(正则表达式, 视图函数,name=‘别名’)
{% url ‘别名’ %}
{% url ‘别名’ ‘参数1’ …}
-
-
创建应用
python3 manage.py startapp app名
-
-
添加urls.py
urlpatterns = [
url(…) 定义子路由
] -
添加 view 处理函数
views.py 里添加子路由对应的处理函数 -
在settings.py 里注册app
-
把子路由添加到主路由urls.py里
-
python3 manage.py startapp bookstore
-
INSTALLED_APPS =[
…
‘bookstore’,
] -
添加主路由:
urls.py
urlpatterns = [
…
url(r’^book/’, include(…)),
] -
有bookstore/urls.py
urlpatterns = [
空
] -
定义视图函数 bookstore/views.py
def homepage(…): 对应r’^$’
/book/ 显示图书主页
-
-
数据库的操作:
-
- 配置settings.py
DATABASES = {
‘default’ : {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘mywebdb’, # 数据库名称,需要自己定义
‘USER’: ‘root’,
‘PASSWORD’: ‘123456’, # 管理员密码
‘HOST’: ‘127.0.0.1’,
‘PORT’: 3306,
}
}
2.修改 项目名称/init.py
import pymysql
pymysql.install_as_MySQLdb()
3.生成迁移文件
python3 manage.py makemigrations
4.更新数据库
python3 manage.py migrate
5.生成一个自己的数据库表,用来图书信息- python3 manage.py startapp bookstore
- 注册bookstore 到Django框架
INSTALLED_APPS = [
…
‘bookstore’
] - 添加自己的数据表
在 bookstore.py 里创建一个模型类
class Book(models.Model):
title = CharField(…) - 重新生成迁移文件
python3 manage.py makemigrations - 更新数据库
python3 manage.py migrate
- 配置settings.py
-
出错处理
-
- 删除 migrations里所有的 000?_XXXX.py
- 删除 数据表
sql> drop database mywebdb; - 重新创建 数据表
sql> create datebase mywebdb default charset…; - 重新生成migrations里所有的 000?_XXXX.py
python3 manage.py makemigrations - 重新更新数据库
python3 manage.py migrate