我们先了解一下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 HttpResponse import 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 admin from django.urls import path from blog import views urlpatterns = [ path(‘admin/‘, admin.site.urls), path(‘cur_time/‘,views.cur_time) ]
在views.py的代码:
from django.shortcuts import render,HttpResponse import datetime def 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
效果如图:
原文地址:https://www.cnblogs.com/cailunduo/p/10337365.html