Django 在不同应用程序中的视图之间重定向()
我正在学习Django教程,其中Django 在不同应用程序中的视图之间重定向(),django,Django,我正在学习Django教程,其中博客应用程序和用户应用程序是分开的。注册为用户后,我希望该用户被重定向到博客应用程序中的视图。以下是用户应用程序视图。py: def register(request): if request.method == 'POST': # if form was submitted w data form = UserCreationForm(request.POST) #instantiate form w post data
博客
应用程序和用户
应用程序是分开的。注册为用户后,我希望该用户被重定向到博客
应用程序中的视图。以下是用户
应用程序视图。py
:
def register(request):
if request.method == 'POST': # if form was submitted w data
form = UserCreationForm(request.POST) #instantiate form w post data
if form.is_valid():
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}')
return redirect('blog-home') #not working
else:
form = UserCreationForm()
return render(request, 'users/register.html', {'form':form})
from django.shortcuts import render
from django.http import HttpResponse
from .models import Post
# Create your views here.
def home(request):
posts = Post.objects.all()
return render(request, 'blog/home.html', {'posts':posts})
下面是博客
应用程序的视图.py
:
def register(request):
if request.method == 'POST': # if form was submitted w data
form = UserCreationForm(request.POST) #instantiate form w post data
if form.is_valid():
username = form.cleaned_data.get('username')
messages.success(request, f'Account created for {username}')
return redirect('blog-home') #not working
else:
form = UserCreationForm()
return render(request, 'users/register.html', {'form':form})
from django.shortcuts import render
from django.http import HttpResponse
from .models import Post
# Create your views here.
def home(request):
posts = Post.objects.all()
return render(request, 'blog/home.html', {'posts':posts})
以及与所述视图关联的url模式:
path('', views.home, name = 'blog-home'),
当用户提交表单时,我收到以下错误:Reverse for'home'not found'“主视图”不是有效的视图函数或模式名称。
我不确定这是为什么,我相信我逐字复制了代码,视频中的示例正在运行 如果要重定向到名为“blog-home”的url,则需要反向(“blog-home”) 您的url不是“主页”,而是“博客主页”。您的错误提到您试图反转为“home” 如果您更改了视图,它应该可以工作:
def寄存器(请求):
if request.method=='POST':#如果表单是用数据提交的
form=UserCreationForm(request.POST)#实例化表单w POST数据
如果form.is_有效():
username=form.cleaned\u data.get('username'))
messages.success(请求,f'Account created for{username}')
返回重定向(反向('blog-home'))
其他:
form=UserCreationForm()
返回呈现(请求'users/register.html',{'form':form})
如果要重定向到名为“blog-home”的url,则需要反转(“blog-home”)
您的url不是“主页”,而是“博客主页”。您的错误提到您试图反转为“home”
如果您更改了视图,它应该可以工作:
def寄存器(请求):
if request.method=='POST':#如果表单是用数据提交的
form=UserCreationForm(request.POST)#实例化表单w POST数据
如果form.is_有效():
username=form.cleaned\u data.get('username'))
messages.success(请求,f'Account created for{username}')
返回重定向(反向('blog-home'))
其他:
form=UserCreationForm()
返回呈现(请求'users/register.html',{'form':form})
在应用程序的URL.py中提及应用程序名称,以便您可以重定向到任何应用程序的视图
blog/url.py
app_name = 'blog'
urlpatterns =[...
]
现在你可以像这样重定向到博客应用程序主视图
return redirect ('blog:blog_home')
#return redirect ('app_name:url_name')
在你的应用程序的url.py中提及app_名称,这样你就可以重定向到任何应用程序的视图 blog/url.py
app_name = 'blog'
urlpatterns =[...
]
现在你可以像这样重定向到博客应用程序主视图
return redirect ('blog:blog_home')
#return redirect ('app_name:url_name')
我没有意识到我的blog/urls.py中已经有了这一点,教程的代码可以正常工作,因为它们没有。无论如何,很高兴知道如果inlcude app_name我需要在redirect()中引用它。谢谢,这很有效。我没有意识到我的博客/url.py中已经有了这个,教程的代码也可以正常工作,因为它们没有。无论如何,很高兴知道如果inlcude app_name我需要在redirect()中引用它。谢谢,这个有用。