一、url视图映射
在url.py中定义两个视图函数,并添加到urlpatterns中用于访问。
python
from django.contrib import admin
from django.urls import path
from django.shortcuts import HttpResponse
# 默认的地址为:http://127.0.0.1:8000/
# 如果我想要访问默认地址下的其他内容,可以通过定义视图并将视图进行映射
def index(request):
return HttpResponse("这是默认页面")
def my_page(request):
return HttpResponse("我的第一个Django项目,我们一定会顺利毕业滴!")
urlpatterns = [
path("admin/", admin.site.urls),
path("", index), # 双引号中为空内容,表示为默认地址
path("mypage", my_page) # 自定义url
]
运行后的结果显示:
在Django项目中,如果你希望在开发过程中随时看到代码更改的效果,可以通过设置DEBUG
和TEMPLATES
配置来实现,具体如下:
1、设置DEBUG为True : 在settings.py
文件中,将DEBUG
设置为True
。这样可以确保Django在开发过程中提供详细的错误页面,并且每次代码更改后,页面都会自动刷新以显示最新的代码效果。
python
# settings.py
DEBUG = True
2、设置模板的AUTO_RELOAD : 在settings.py
文件中,确保TEMPLATES
配置中的OPTIONS
字典包含了'debug': True
,这样可以在开发服务器运行时自动检测模板文件的更改。
python
# settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
...
],
'debug': True, # 确保这一行被设置为True
},
},
]
二、URL传参
2.1、字符串查询传参
在book/view.py中添加视图:
python
from django.shortcuts import render,HttpResponse
# 在url中携带参数
# 1、通过查询字符串(query string) :http://127.0.0.1:8000/book?id=1
# 2、在path中携带:http://127.0.0.1:8000/book/2
def book_detail_query_id(request):
book_id = request.GET.get('id')
book_name = request.GET.get('name')
return HttpResponse(f"我们要查找的图书id是:{book_id},图书名称为:{book_name}")
在url.py中进行视图映射:
python
from django.contrib import admin
from django.urls import path
from django.shortcuts import HttpResponse
from book import views
# 默认的地址为:http://127.0.0.1:8000/
# 如果我想要访问默认地址下的其他内容,可以通过定义视图并将视图进行映射
def index(request):
return HttpResponse("这是默认页面")
def my_page(request):
return HttpResponse("我的第一个Django项目,我们一定会顺利毕业滴!")
urlpatterns = [
path("admin/", admin.site.urls),
path("", index), # 双引号中为空内容,表示为默认地址
path("mypage", my_page), # 自定义url
path("book", views.book_detail_query_id)
]
结果显示:
2.2、path路径传参
在book/view.py中添加视图:
python
from django.shortcuts import render,HttpResponse
# 在url中携带参数
# 1、通过查询字符串(query string) :http://127.0.0.1:8000/book?id=1
def book_detail_query_id(request):
book_id = request.GET.get('id')
book_name = request.GET.get('name')
return HttpResponse(f"我们要查找的图书id是:{book_id},图书名称为:{book_name}")
# 2、在path中携带:http://127.0.0.1:8000/book/2
def book_detail_path(request,book_id):
return HttpResponse(f"您要查找的图书id是:{book_id}")
在url.py中进行视图映射:
python
from django.contrib import admin
from django.urls import path
from django.shortcuts import HttpResponse
from book import views
# 默认的地址为:http://127.0.0.1:8000/
# 如果我想要访问默认地址下的其他内容,可以通过定义视图并将视图进行映射
def index(request):
return HttpResponse("这是默认页面")
def my_page(request):
return HttpResponse("我的第一个Django项目,我们一定会顺利毕业滴!")
urlpatterns = [
path("admin/", admin.site.urls),
path("", index), # 双引号中为空内容,表示为默认地址
path("mypage", my_page), # 自定义url
path("book", views.book_detail_query_id),
# 在book_id前面添加指定参数类型,如果在浏览器中输入了非整型,会报404错误,并且在视图函数中,book_id就是一个整型,否则是字符串类型
path("book/<int:book_id>", views.book_detail_path)
]
结果显示:
2.3、path函数
path函数的定义是:path(route,view,name=None,kwargs=None)。
- route参数:以下是几种常用的类型:
- int:匹配任意的零或者正数的整型。到视图函数中就是一个int类型。
- slug:由英文中的横杠-,或者下划线_连接英文字符或者数字而成的字符串。
- uuid:匹配uuid字符串
- path:匹配非空的英文字符串,可以包含斜杠/。
- str:非空的字符串类型。默认的转换器。但是不能包含斜杠。
- view参数:可以为一个视图函数或者类视图.as_view()或者是django.urls.include()函数的返回值。
- name参数:这个参数是给这个url取个名字的,这在项目比较大,url比较多的时候用处很大。