首页 > 解决方案 > 登录用户步骤的权限

问题描述

我正在创建一个带有食谱的应用程序。现在我想让登录用户可以自己添加食谱。我知道我必须为这个用户创建一些权限,但我不知道如何。我不需要任何代码,我只是想知道您是否可以给我一些指导,必须做什么。我是否必须向我的模型添加一些用户并创建 permission.py?

我的模型:

from django.db import models


class Ingredient(models.Model):

  ingredient_name = models.CharField(max_length=250)

  def __str__(self):
    return self.ingredient_name


class Recipe(models.Model):

  recipe_name = models.CharField(max_length=250)
  preparation = models.CharField(max_length=1000)
  ingredients = models.ManyToManyField(Ingredient)


  def __str__(self):
    return self.recipe_name

行政:

from django.contrib import admin
from .models import Recipe
from .models import Ingredient


admin.site.register(Recipe)
admin.site.register(Ingredient)

标签: djangopermissions

解决方案


使用基于函数的视图,可以在创建配方时添加这些检查

def recipe_create(request):
    if not request.user.is_staff or not request.user.is_superuser:
        raise Http404
    if not request.user.is_authenticated:
        raise Http404

    form = RecipeForm(request.POST or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
        return HttpResponseRedirect(instance.get_absolute_url())
    context = {
        "form": form,
    }
    return render(request, "recipe_form.html", context)

推荐阅读