Django学习(二) 之 模板的使用
写在前面
昨晚应该是睡的最好一天吧,最近一个月睡眠好差,睡不着不说,而且半夜总醒,搞的我第二天就会超没精神。
昨天下午去姐姐家,我刚进屋,小外甥直接就问我说:
老舅,你都很长时间没来啦,**(前女友)哪去了, 我们都好久没出溜溜了!
我顿了下说,她不喜欢我们了,等以后天暖和,我们再去溜溜。
才发现,忘掉一个人真的很难,明知道没结果,还是没法轻易做到波澜不惊,不去想念。
模板的使用
1、视图与html页面
视图: 浏览器窗口展示出来的页面内容,就是视图。
html页面: 在页面上展示出的纯文本内容,打开的浏览器页面,就是html页面
2、创建应用
python manage.py startapp mycontent
3、配置setting
在setting.py
文件中,找到INSTALLED_APPS
,并在最后一行添加如下内容:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mycontent',
]
4、添加模板templates
在新建的应用下创建templates
模板文件夹,在模板下创建content.html
,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>content demo</title>
</head>
<body>
<h3>this is a content</h3>
</body>
</html>
5、url与视图绑定
接下来,需要将html
与url
绑定,啥意思,就是你访问url
连接可以看到你刚才的html
文件内容。
我们需要在mycontent/views.py
里写视图函数添加如下代码:
from django.shortcuts import render
# Create your views here.
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello world ! django ~~")
def my_content(request):
return render(request, 'content.html')
在django_project/urls.py
里添加url
访问路径,示例代码如下:
from django.conf.urls import url
from mycontent import views
urlpatterns = [
url('^$', views.index),
url('^my_content', views.my_content())
]
访问http://127.0.0.1:8000/my_content
可以看到效果如下:
6、urls.py配置规则
主要有三个:path、re_path、url
:
path
只能绝对匹配路径地址,不支持正则匹配re_path
支持正则匹配,django 1.x
版本常用url
支持正则匹配,实际上就是return re_path, django2.x
版本推荐
从path()
和re_path()
源码看,path()
的匹配规则是RoutePattern
, re_path()
匹配规则是RegexPattern
path = partial(_path, Pattern=RoutePattern)
re_path = partial(_path, Pattern=RegexPattern)
url()
源码,也是使用的re_path()
def url(regex, view, kwargs=None, name=None):
return re_path(regex, view, kwargs, name)
7、动态url的处理
沿用博主的案例吧,就是分页跳转的例子,不能动态写死,只需要用正则表达式匹配数字即可,匹配任意数字,可以用正则\d+
匹配,如下所示:
url('^pagehelper=\d+$', views.pagehelper)
模拟场景就是,传入非数字类型参数返回404 Not Found
,在mycontent/views.py
修改代码如下:
# Create your views here.
from django.http import HttpResponse, Http404
from django.shortcuts import render
# Create your views here.
def index(request):
return HttpResponse("Hello world ! django ~~")
def my_content(request):
return render(request, 'content.html')
def pagehelper(request,num):
try:
num=int(num)
return render(request, 'content.html')
except:
raise Http404
在django_project/urls.py
里添加url
访问路径,示例代码如下:
from django.conf.urls import url
from django.urls import re_path, path
from mycontent import views
urlpatterns = [
path("index/", views.index),
re_path('^$', views.index),
url('^$', views.index),
url('^my_content/$', views.my_content),
url('^my_content/page=(\d+)$', views.pagehelper),
]
效果:
这个报错,主要是因为Django
设置文件setting.py
里面有个参数 DEBUG = True
,将其更改为False
,Django
将显示标准的404
页面。
默认显示如下:
知识点:
DEBUG=True:
表示处于开发阶段,默认为True
DEBUG = False:
表示开发完成正式发布产品上线ALLOWED_HOSTS:
域名访问权限,设置可以访问的域名,默认值为空\[]
, 只允许localhost
或127.0.0.1
在浏览器上访问。- 修改
DEBUG = False
后,,必须重新启动服务,同时需要加个ALLOWED_HOSTS
地址,如果想让所以的域名都能访问,可以设置为:ALLOWED_HOSTS = ["*"]
- 修改后使用如下命令重启:
python manage.py runserver
效果如下:
写在最后
一段感情开始容易,结束却很难,它不是今天和明天的一刀切,分开了就是两条路,它是过往习惯的终结,是爱过但也不再爱的承认,是一个人面对未知的勇气,是从此一别两宽、各生欢喜。
如果可以,我也想这么释然,放过自己,不再这么内耗自己了。
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君