Django Reverse(Django Reverse()反转url)29

作者 : 慕源网 本文共6585个字,预计阅读时间需要17分钟 发布时间: 2021-11-23 共67人阅读

本文是Django教程的一部分,您可以点击Django教程系列查看所有教程。

Django Reverse(Django Reverse()反转url)29

Django Reverse简介

通常,所有 Web 应用程序都包含大量 url。基于 Web 应用程序,网址的数量可以是数千甚至十万。部署了这么多页面后,在每个页面或每个视图或每个涉及的模板中硬编码 url 将来可能会变得非常忙碌。当使用的 url 有任何更改时,将来可能会产生很多问题。为了克服这个问题,可以使用反转功能。reverse 函数允许通过在那里提供的名称值从 url’s.py 文件中检索 url 详细信息。这是 Django 中reverse 函数的主要用途。

语法:

from django.urls import reverse
Redirect_Variable = reverse(redirect_url_name)

重定向变量是这里的变量,它将具有相反的值。所以反转的url值会放在这里。所以对于redirect_url_name中提到的url的名称,会在后端分配一个url值。在后端分配的这个 url 值将与重定向变量相关联。接下来使用实际的反转功能。实际的reverse 函数用于执行反向发生。此方法将负责反转新的 url 值。使用 reverse 函数,必须指定重定向 url 的名称。此处指定的 url 值名称将用于 url’s.py 文件中的重定向 url 名称。

反转功能如何工作?

reverse 函数可以被认为在 url 处理中非常有用,它有助于避免应用程序将来出现任何故障,因为它能够在其中保存 url 值。reverse 函数的作用可以分为三种简单的方法,如下所示,

1) 在 url’s.py 文件中声明要装帧的 url。这是最关键的部分。以后对 url 的所有引用都只会从这里发生。

2) 接下来从 url’s.py 文件转到视图,在新视图中,必须使用硬编码的 url 变量名称声明reverse 函数。此部分负责将 url 字段名称反转为有效的 url 值。

3)最后一节涉及到实际重定向,这里会触发和处理重定向。所以当这个部分被调用时,重定向将发生在页面上。

创建 DJANGO 反向函数

1) url.py 文件的变化:

下面是 url 的文件,这将是 url.py 文件,在其中声明了所有的 url,这些 url 使用 name 参数进行编码。这个名称参数负责调用反向函数并返回实际的 url 值。我们可以从下面的示例中注意到,声明的每个 url 都与其中的一个 url 值相关联,这会在后端触发基于反向的存储。

url.py:

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from matrimony_pages import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'Jsoncheck/',views.Json_Response,name='Json_Response'),
url(r'^$',views.Entry_page,name='Entry_page'),
url(r'Mainpage/',views.Main_page,name='Main_page'),
url(r'all/',views.All_users,name='all'),
url(r'form/',views.form_view,name='form_view'),
url(r"signup/", views.Sign_up_Call, name="register"),
url(r"login/", views.login_Call, name="login"),
path(r'profile/<str:pk>/',views.profile_page,name='profile'),
url(r'logout/',views.logout_Call,name='logout'),
url(r'reg/',views.profile_reg_user,name='reg'),
path(r'update/<str:pk>/',views.form_update,name='update'),
path('admin/', admin.site.urls),
]+ static(settings.MEDIA_URL,document_root=settings.M

3)为表单创建一个视图:

提交时的整数值必须存储,检索时必须从数据库中提取。这可以通过为模型创建的对象来实现。下面给出的 views.py 部分解释了这样做的过程。

例如:views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import *
from .forms import NewUserForm,Valueform
from django.contrib.auth import login,authenticate,logout
from django.contrib import messages
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth.models import User
from django.contrib.auth.decorators import user_passes_test,login_required
from django.core.paginator import Paginator
from django.http import JsonResponse
from django.urls import reverse
def All_users(request):
User_entries = User.objects.all()
page = request.GET.get('page', 1)
paginator = Paginator(User_entries, 5)
users = paginator.page(page)
print(" Has other pages : ",users.has_other_pages())
print(" Has next page : ",users.has_next())
print(" Has previous page : ",users.has_previous())
print(" Has previous page : ",users.has_previous())
print(" Start Index : ",users.start_index())
print(" End Index : ",users.end_index())
if users.has_next():
print(" Next page Number: ",users.next_page_number())
elif users.has_previous():
print(" Has Previous page Number: ",users.previous_page_number())
print(paginator,users)
return render(request,"All_users.html",{'users':users})
def Sign_up_request(request):
if request.method == "POST":
form = NewUserForm(request.POST)
print(form.is_valid())
if form.is_valid():
user = form.save()
login(request, user)
print(User.objects.all())
messages.success(request, "Registration successful." )
named_redirect = reverse('Welcome_page')
return redirect(named_redirect)
messages.error(request, "Unsuccessful registration. Invalid information.")
form = NewUserForm
return render (request,template_name="Signup.html", context={"Sign_up_form":form})
def login_request(request):
if request.method == "POST":
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = authenticate(request,username=username, password=password)
if user is not None:
print('1',request.user.is_authenticated, request.user)
login(request, user)
# logout(request)
print('1',request.user.is_authenticated, request.user)
messages.info(request, f"You are now logged in as {username}.")
named_redirect = reverse('Welcome_page')
return redirect(named_redirect)
else:
messages.error(request,"Invalid username or password.")
form = AuthenticationForm()
return render(request=request, template_name="login.html", context={"login_form":form})
def logout_request(request):
if request.user.is_authenticated:
logout(request)
print('2',request.user.is_authenticated, request.user)
messages.info(request, "Logged out successfully!")
named_redirect = reverse('Welcome_page')
return redirect(named_redirect)
@login_required
def Reverse_Redirect_Example_page(request,pk):
render_dict2 = {}
Key_details = Bride.objects.get(id=pk)
Reverse_Redirect_Example_name = Key_details.name
Reverse_Redirect_Example_Age = Key_details.age
Reverse_Redirect_Example_Thegai = Key_details.thegai
Reverse_Redirect_Example_state = Key_details.State
Reverse_Redirect_Example_district = Key_details.District
Reverse_Redirect_Example_Address = Key_details.Address
Reverse_Redirect_Example_Phone = Key_details.Phone
Reverse_Redirect_Example_Profession = Key_details.profession
Reverse_Redirect_Example_Salary = Key_details.salary
Reverse_Redirect_Example_UG = Key_details.Under_Graduation_Degree
Reverse_Redirect_Example_UGC = Key_details.Under_Graduation_college
Reverse_Redirect_Example_PG = Key_details.Post_Graduation_Degree
Reverse_Redirect_Example_PGC = Key_details.Post_Graduation_college
Reverse_Redirect_Example_UG = Key_details.Under_Graduation_Degree
Reverse_Redirect_Example_UGC = Key_details.Under_Graduation_college
Reverse_Redirect_Example_PG = Key_details.Post_Graduation_Degree
Reverse_Redirect_Example_PGC = Key_details.Post_Graduation_college
Reverse_Redirect_Example_Rasi = Key_details.Rasi
Reverse_Redirect_Example_Nakshatra = Key_details.Nakshatra
render_dict2['Age'] = Reverse_Redirect_Example_Age
render_dict2['name'] = Reverse_Redirect_Example_name
render_dict2['thegai'] = Reverse_Redirect_Example_Thegai
render_dict2['State'] = Reverse_Redirect_Example_state
render_dict2['district'] = Reverse_Redirect_Example_district
render_dict2['Address'] = Reverse_Redirect_Example_Address
render_dict2['Phone'] = Reverse_Redirect_Example_Phone
render_dict2['profession'] = Reverse_Redirect_Example_Profession
render_dict2['Under_Graduation_Degree'] = Reverse_Redirect_Example_UG
render_dict2['Under_Graduation_college'] = Reverse_Redirect_Example_UGC
render_dict2['Post_Graduation_Degree'] = Reverse_Redirect_Example_PG
render_dict2['Post_Graduation_college'] = Reverse_Redirect_Example_PGC
render_dict2['Rasi'] = Reverse_Redirect_Example_Rasi
render_dict2['Nakshatra'] = Reverse_Redirect_Example_Nakshatra
print(Key_details.Creator)
print(render_dict2)
return render(request,'Profilepage.html',render_dict2)

输出:

Django Reverse(Django Reverse()反转url)29

Django Reverse(Django Reverse()反转url)29

在下面的示例输出中,单击登录按钮会将用户重定向到应用程序的主页。这种重定向是通过反向功能实现的。

结论

上面的文章清楚地提到了 Django 反向函数的使用,如何在 Django 中使用反向函数来避免 url 的硬编码,以及合适的例子来解释反向函数在 Django 中的使用和执行。


慕源网 » Django Reverse(Django Reverse()反转url)29

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

发表评论

开通VIP 享更多特权,建议使用QQ登录