首页 > 其他分享 >Django学习(二) 之 模板的使用

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

时间:2023-12-04 21:25:41浏览次数:29  
标签:content views url django 学习 import path 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与视图绑定

接下来,需要将htmlurl绑定,啥意思,就是你访问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()的匹配规则是RoutePatternre_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,将其更改为FalseDjango将显示标准的404页面。

默认显示如下:

知识点:

  • DEBUG=True:表示处于开发阶段,默认为True
  • DEBUG = False:表示开发完成正式发布产品上线
  • ALLOWED_HOSTS:域名访问权限,设置可以访问的域名,默认值为空\[], 只允许localhost127.0.0.1在浏览器上访问。
  • 修改DEBUG = False后,,必须重新启动服务,同时需要加个ALLOWED_HOSTS 地址,如果想让所以的域名都能访问,可以设置为:ALLOWED_HOSTS = ["*"]
  • 修改后使用如下命令重启:python manage.py runserver

效果如下:

写在最后

一段感情开始容易,结束却很难,它不是今天和明天的一刀切,分开了就是两条路,它是过往习惯的终结,是爱过但也不再爱的承认,是一个人面对未知的勇气,是从此一别两宽、各生欢喜。

如果可以,我也想这么释然,放过自己,不再这么内耗自己了。

标签:content,views,url,django,学习,import,path,Django,模板
From: https://www.cnblogs.com/longronglang/p/17876008.html

相关文章

  • Django和sqlite3版本不匹配解决 Django-django.core.exceptions.ImproperlyConfigured
    1.修改django源文件配置2升级sqlite下载sqlite3wgethttps://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz 解压并安装sqlite3tar-zxvfsqlite-autoconf-3270200.tar.gzcdsqlite-autoconf-3270200./configure--prefix=/usr/localmake&&makeinstall......
  • 机器学习--决策树(信息熵,信息增益,信息增益率,基尼值,基尼指数)
    决策树是根据条件分支语句if-else产生的,决策树是一种树形结构,每一个内部节点表示是一个属性上的判断,每一个分支表示判断结果的输出,每一个叶子节点表示分类结果,本质上就是多个判断节点的树。在使用决策树的时候会提到熵的概念熵:熵表示混乱程度,越混乱熵值越大,越有序熵值越小,在信息......
  • Java学习之路(十二)
    Java学习之路(十二)1、时间日期类1.1、Date类(应用)计算机中时间原点1970年1月1日00:00:00时间换算单位1秒=1000毫秒Date类概述Date代表了一个特定的时间,精确到毫秒Date类构造方法方法名说明publicDate()分配一个Date对象,并初始化,以便它代表它被分......
  • 关于kmp模板
    那个求p串的next数组这个版本是下标从1开始的字符串,如果从0开始的话,可以在前面加空字符,然后p.size或者s.size的地方-1即可。nex[1]=0    for(inti=2,j=0;i<=p.size();i++){if(j&&p[i]!=p[j+1])j=nex[j];if(p[i]==p[j+1])j++;nex[i]=j;} kmp函数......
  • .net core(微服务学习)-使用Jenkins基于流水线 发布 .net Core代码
    Jenkins是大家常见的CI/CD工具,如果线上需要发布更新代码可以通过jenkins进行操作1.下载Jenkins包首先windows下和Liunx下都可以通过war包进行部署Jenkinsdownloadanddeployment windows启动windows下使用一下命令保存为bat脚本双击即可启动java-jar-Dhudson.mod......
  • openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引
    openGauss学习笔记-141openGauss数据库运维-例行维护-例行重建索引141.1背景信息数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效的提高查询效率。数据库支持的索引类型为B-tree索引,例行重建索引可有效的提高查询效率。如果数据发生......
  • openGauss学习笔记-142 openGauss 数据库运维-例行维护-导出并查看wdr诊断报告
    openGauss学习笔记-142openGauss数据库运维-例行维护-导出并查看wdr诊断报告生成快照数据需参数enable_wdr_snapshot=on,访问WDR快照数据需要sysadmin或monadmin权限,因此需要使用root账号或其他拥有权限的账号来生成WDR诊断报告。执行如下命令新建报告文件。touch/home/om/w......
  • C++_线程池代码看C++类-模板-标准库
    C++线程池线程池的组成部分:线程池管理器(ThreadPoolManager):用于创建并管理线程池工作线程(WorkThread):线程池中线程任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。任务队列:用于存放没有处理的任务。提供一种缓冲机制。 通过新......
  • 如何量化shader的性能标准学习心得
    序言,开头耳  随着如今手游、主机游戏的开发越来越重度。硬件性能跟不上效果产生的能耗,开发者需要主动关注shader的性能问题,并合理指定标准。标准的制定前首先是让问题可被量化。  参考外网大佬的文章:https://thegamedev.guru/unity-gpu-performance/shader-cost-analysis-m......
  • 六. 函数模板和类模板
    文章参考:《C++面向对象程序设计》✍千处细节、万字总结(建议收藏)_白鳯的博客-CSDN博客1.引入在编写函数和类时,有时会出现这样的情况,具体实现方式完全一致,但因此参数类型、返回值类型、数据类型等因素的不同,导致不得不写多个函数或者类(因为C++是强类型语言,无法隐式转换,且有些......