翼度科技»论坛 编程开发 python 查看内容

Django学习(二) 之 模板的使用

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
写在前面

昨晚应该是睡的最好一天吧,最近一个月睡眠好差,睡不着不说,而且半夜总醒,搞的我第二天就会超没精神。
昨天下午去姐姐家,我刚进屋,小外甥直接就问我说:
老舅,你都很长时间没来啦,**(前女友)哪去了, 我们都好久没出溜溜了!
我顿了下说,她不喜欢我们了,等以后天暖和,我们再去溜溜。
才发现,忘掉一个人真的很难,明知道没结果,还是没法轻易做到波澜不惊,不去想念。
模板的使用

1、视图与html页面

视图: 浏览器窗口展示出来的页面内容,就是视图。
html页面: 在页面上展示出的纯文本内容,打开的浏览器页面,就是html页面
2、创建应用

python manage.py startapp mycontent
3、配置setting

在setting.py文件中,找到INSTALLED_APPS,并在最后一行添加如下内容:
  1. INSTALLED_APPS = [
  2.     'django.contrib.admin',
  3.     'django.contrib.auth',
  4.     'django.contrib.contenttypes',
  5.     'django.contrib.sessions',
  6.     'django.contrib.messages',
  7.     'django.contrib.staticfiles',
  8.     'mycontent',
  9. ]
复制代码
4、添加模板templates

在新建的应用下创建templates模板文件夹,在模板下创建content.html,代码如下:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>content demo</title>
  6. </head>
  7. <body>
  8. <h3>this is a content</h3>
  9. </body>
  10. </html>
复制代码
5、url与视图绑定

接下来,需要将html与url绑定,啥意思,就是你访问url连接可以看到你刚才的html文件内容。
我们需要在mycontent/views.py里写视图函数添加如下代码:
  1. from django.shortcuts import render
  2. # Create your views here.
  3. from django.shortcuts import render
  4. from django.http import HttpResponse
  5. # Create your views here.
  6. def index(request):
  7.     return HttpResponse("Hello world !  django ~~")
  8. def my_content(request):
  9.     return render(request, 'content.html')
复制代码
在django_project/urls.py里添加url访问路径,示例代码如下:
  1. from django.conf.urls import url
  2. from mycontent import views
  3. urlpatterns = [
  4.     url('^$', views.index),
  5.     url('^my_content', views.my_content())
  6. ]
复制代码
访问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
  1. path = partial(_path, Pattern=RoutePattern)
  2. re_path = partial(_path, Pattern=RegexPattern)
复制代码
url()源码,也是使用的re_path()
  1. def url(regex, view, kwargs=None, name=None):
  2.     return re_path(regex, view, kwargs, name)
复制代码
7、动态url的处理

沿用博主的案例吧,就是分页跳转的例子,不能动态写死,只需要用正则表达式匹配数字即可,匹配任意数字,可以用正则\d+匹配,如下所示:
  1. url('^pagehelper=\d+$', views.pagehelper)
复制代码
模拟场景就是,传入非数字类型参数返回404 Not Found,在mycontent/views.py修改代码如下:
  1. # Create your views here.
  2. from django.http import HttpResponse, Http404
  3. from django.shortcuts import render
  4. # Create your views here.
  5. def index(request):
  6.     return HttpResponse("Hello world !  django ~~")
  7. def my_content(request):
  8.     return render(request, 'content.html')
  9. def pagehelper(request,num):
  10.     try:
  11.         num=int(num)
  12.         return render(request, 'content.html')
  13.     except:
  14.         raise Http404
复制代码
在django_project/urls.py里添加url访问路径,示例代码如下:
  1. from django.conf.urls import url
  2. from django.urls import re_path, path
  3. from mycontent import views
  4. urlpatterns = [
  5.     path("index/", views.index),
  6.     re_path('^$', views.index),
  7.     url('^$', views.index),
  8.     url('^my_content/$', views.my_content),
  9.     url('^my_content/page=(\d+)$', views.pagehelper),
  10. ]
复制代码
效果:


这个报错,主要是因为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
效果如下:

写在最后

一段感情开始容易,结束却很难,它不是今天和明天的一刀切,分开了就是两条路,它是过往习惯的终结,是爱过但也不再爱的承认,是一个人面对未知的勇气,是从此一别两宽、各生欢喜。
如果可以,我也想这么释然,放过自己,不再这么内耗自己了。

来源:https://www.cnblogs.com/longronglang/p/17876008.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具