我们先了解一下urls和views分别是干嘛用的:
- urls:
URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。
你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码
urls.py里面的基本格式如下:
from django.conf.urls import url urlpatterns = [ ????url(正则表达式, views视图函数,参数,别名),]
一般我们只会用到url里面的前两个参数。
- views:
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。
无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中
一个简单的视图:
from django.http import HttpResponseimport datetime def current_datetime(request): ???now = datetime.datetime.now() ???html = "<html><body>It is now %s.</body></html>" % now ???return HttpResponse(html)
对于HttpResponse与render的区别:
我个人理解是:render包含HttpResponse的操作,在render对象下边已经封装了HttpResponse的操作,而HttpResponse是直接给页面返回内容没有经过一些文件操作,而render还可以传入HTML文件进行操作。(了解较浅,可能有误)
现在我们来做一个与之前学习的wsgi一样的功能(也就是在浏览器页面显示当前时间):
在urls.py的代码:
from django.contrib import adminfrom django.urls import pathfrom blog import viewsurlpatterns = [ ???path(‘admin/‘, admin.site.urls), ???path(‘cur_time/‘,views.cur_time)]
在views.py的代码:
from django.shortcuts import render,HttpResponseimport datetimedef cur_time(request): ???times = datetime.datetime.now() ???# return HttpResponse(‘<h1>ok</h1>‘) ???return render(request,‘cur_time.html‘,{‘abc‘:times})#render是渲染的意思
还得在template里面创建一个HTML文件 ‘cur_time.html’
PS:这里的文件并不用传路径,因为settings内部已经帮我们找到了这个路径。
cur_time.html文件内容如下:
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Title</title></head><body><h1>当前时间:{{ abc }}</h1></body></html>
之前学wsgi的时侯我们是用!!abc!!而不是两个{{abc}},在django里面我们用第二种
然后在pycharm终端执行:
python manage.py runserver 8080
即可执行。
在浏览器输入
127.0.0.1:8080/cur_time
效果如图:
django之urls与视图函数views的简单学习
原文地址:https://www.cnblogs.com/cailunduo/p/10337365.html