平常我们访问页面时经常有这样的url:http://127.0.0.1:8000/hello/page=1,
这样带参数的url需要我们获取到page后的参数,传递给视图函数进行处理。
url(r'^page=(\d+)$',views.page),
使用正则匹配页码数
def page(request,num):
# return render(request, "222.html")
# print(num,type(num))
# if int(num)== 1:
# return render(request, "111.html")
# else:
# return render(request, "222.html")
try:
num = int(num)
if num == 1:
return render(request, "111.html")
else:
return render(request, "222.html")
except:
raise Http404
参数接收到的是str类型,需要转换成对应的int 类型
如果url匹配规则为
url(r'^page=\d+$',views.page),此时视图函数page就接收不到 num参数了,不论page值为多少,都不能实现动态访问
如果page函数中仍然接收了参数就会报服务器错误
加上括号后表示此参数会传递给视图函数。
Django设置文件setting.py里面有个参数 DEBUG = True,表示debug模式,如果不修改为False界面显示的将是
修改为False后,显示正常的界面
ALLOWED_HOSTS是域名访问权限,设置可以访问的域名,默认值为空[], 只允许localhost或127.0.0.1在浏览器上访问
如果想让所有的域名都能访问,可以设置为:ALLOWED_HOSTS = ["*"]
或者在列表中指定能够访问的ip,仅指定的ip可访问。
注意:修改settings.py文件后需要重启服务器,才能使修改生效。
home界面:
homepage
{{year}}----->>>>>{{month}}
点击跳转到我的界面
def home(request, year, month):
return render(request, "datetime.html", {"year": year, "month": month})
#传递参数到界面上
def my_page(request):
return HttpResponse("这个是我的界面")
from django.conf.urls import url
from django.urls import path
# from hello import views
from hello import views
from . import view
urlpatterns = [
url(r"^page/(?P[0-9]{4})/(?P[0-1][0-9])", view.home, name="date"),
url(r'^mypage$', view.my_page),
]
url获取参数
注意:点击跳转到我的界面的标签中href如果只写 href='mypage',只是将原来的url中最后一个/后的内容替换为mypage,如果没有对应的url匹配就会报404错误。
urls.py本质上就是一个请求映射表,它决定了哪个请求由哪个函数来处理,具体过程如下:
1 浏览器发送请求url
2 服务端根据请求的url,在项目的所有应用(包括根目录)的urls.py配置文件中进行查找,如果能匹配到该url,就会将该url交给其对应的视图函数进行处理。
3 负责处理该url的视图函数,会搜集一些业务数据,然后把这些数据,通过 return render(request, '模板文件', 数据); 渲染到前端页面展示给用户