一.模板显示
1.传参显示
在根路径下引入子路径
url(r'^app/',include('App.urls'))
在App下的urls.py文件中:
urlpatterns=[
url(r'^testTem/',views.testTem)
]
在templates中创建testTem.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
欢迎{{ name }}来到英雄联盟
</body>
</html>
在App下的views中:
def testTem(request):
context = {
'name': '源'
}
return render(request, 'testTem.html', context=context)
运行结果:
2.支持 for
在testTem中:
<ul>
{% for hero in hero_list %}
<li>{{ hero }}</li>
{% endfor %}
</ul>
在views中:
def testTem(request):
hero_list = ['亚索', '佐伊', '厄斐琉斯']
context = {
'name': '源',
'hero_list': hero_list,
}
return render(request, 'testTem.html', context=context)
运行结果:
3.兼容性
模板的兼容性很强,其不传入不会报错,多传入也会自动优化掉。
例如我们在testTem中添加{{qwer}}
<body>
欢迎{{ name }}来到英雄联盟
<hr>
<ul>
{% for hero in hero_list %}
<li>{{ hero }}</li>
{% endfor %}
</ul>
{{ qwer }}
<hr>
</body>
或者在视图函数中随意添加一个参数:‘age’:18
def testTem(request):
hero_list = ['亚索', '佐伊', '厄斐琉斯']
context = {
'name': '源',
'hero_list': hero_list,
'age': 18
}
return render(request, 'testTem.html', context=context)
运行结果:
从运行结果上看来,是没有任何变化的,所以django模板的兼容性很强。
浏览器不认模板
浏览器也叫做html解析器 只识别html文件
在到达浏览器之前,已经进行了转换,将模板语言转换成了HTML
4.render底层实现
render的底层实现分为2步:(1)加载(2)渲染
应用场景:发送邮件,邮件的内容需要使用render方法来操纵
在App下urls中:
url(r'^testRender/',views.testRender)
创建视图函数:
def testRender(request):
# (1)加载
index = loader.get_template('testRender.html')
context = {
'name':'源'
}
# 2)渲染
result = index.render(context=context)
return HttpResponse(result)
创建testRender.html文件:
<body>
{{ name }},今晚五黑走起。
</body>
运行结果:
二.数据库的修改
在settings中的DATABASES中进行修改
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
#'NAME':数据库名字
'NAME': 'xxxx',
#'USER':用户名字
'USER':'xxxx',
#'PASSWORD':密码
'PASSWORD':'xxxx',
#'HOST':主机
'HOST':'xxx.xxx.xxx.xxx',
#'PORT':端口号
'PORT':'3306'
}
}
修改后,测试会报错,显示没有MySQLdb驱动:
mysql驱动
(1)mysqlclient:python2,3都能直接使用,但是有一个致命缺点就是对mysql安装有要求,必须指定位置存在配置文件
(2)mysql-python: 对python2支持很好,但是不支持python3
(3)pymysql:会伪装成mysqlclient和mysql-python,其对python2,python3都支持
其需要在init中添加: import pymysql
pymysql.install_as_MySQLdb()
在虚拟环境中,安装pymysql:pip install pymysql
在init中添加:
import pymysql
pymysql.install_as_MySQLdb()
再次启动服务器即可。