0

我的问题很简单,我需要将值从一个视图传递到另一个视图,而访问者无法看到 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 的初学者,尽管我进行了所有研究,但我不明白该怎么做。

有人可以解释我该怎么做(如果可能的话,举个例子)?

4

0 回答 0