我的问题很简单,我需要将值从一个视图传递到另一个视图,而访问者无法看到 URL 中的值。这是我的代码:
视图.py
def home(request, message=None):
plats = Plat.objects.all()
return render(request, 'actualites/home.html', {'last_meals': plats, 'message': message})
@login_required
def proposer_plat(request):
try:
a = request.user.chef
if request.method == "POST":
form = PlatForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect(home)
else:
form = PlatForm()
return render(request, 'actualites/proposer_plat.html', {'form': form})
except ObjectDoesNotExist:
message = "Vous devez être enregistré comme chef pour effectuer cette action"
return redirect(home, message=message)
网址.py
urlpatterns = [
path('', views.home, name = 'home'),
path('meal/<int:id>', views.display, name = 'display'),
path('date', views.date_actuelle, name = 'date'),
path('contact', views.contact, name = 'contact'),
path('connexion', views.connexion, name = 'connexion'),
path('deconnexion', views.deconnexion, name = 'deconnexion'),
path('inscription', Inscription.as_view(), name = 'inscription'),
path('proposer-plat', views.proposer_plat, name = 'proposer-plat')
]
所以这里我需要将变量 message 的值从“proposer_plat”视图传递到“home”视图。实际上我收到了 NoReverseMatch 错误。我知道我可以这样做path('/<message>', views.home, name = 'home'),
,但是这样,消息将显示在 URL 中,如果不在 URL 中提供消息,我将无法访问“主页”视图。我想我可以使用请求(使用 POST 或其他东西)来传递值,但我真的是 Django 的初学者,尽管我进行了所有研究,但我不明白该怎么做。
有人可以解释我该怎么做(如果可能的话,举个例子)?