将参数从一个视图传递到另一个

时间:2019-12-08 12:19:11

标签: django django-urls django-url-reverse

我的问题很简单,我需要将一个视图中的值传递给另一个视图,而访问者无法在URL中看到该值。这是我的代码:

views.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)

urls.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')
]

所以在这里,我需要将变量消息的值从“ proposer_plat”视图传递到“ home”视图。实际上,我收到了NoReverseMatch错误。我知道我愿意path('/<message>', views.home, name = 'home'),,但是,此消息将显示在URL中,并且如果不在URL中提供消息,我将无法访问“主页”视图。我想我可以使用request(用POST或其他方法)传递值,但是我确实是Django的初学者,尽管我做了很多研究,但我不知道该怎么做。

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

0 个答案:

没有答案