django - 登录用户步骤的权限
问题描述
我正在创建一个带有食谱的应用程序。现在我想让登录用户可以自己添加食谱。我知道我必须为这个用户创建一些权限,但我不知道如何。我不需要任何代码,我只是想知道您是否可以给我一些指导,必须做什么。我是否必须向我的模型添加一些用户并创建 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)
解决方案
使用基于函数的视图,可以在创建配方时添加这些检查
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)
推荐阅读
- gitlab - 如何从 CI_PROJECT_DIR 获取配置文件以在服务命令中使用并从服务获取数据作为工件
- mongodb - 如何在 MongoDB 中使用两个字段进行双组和推送?
- java - Postgres 更新查询导致锁定等待飙升
- haskell - 如何在 Haskell 中编写代码以从列表中过滤掉 Nothing 值
- openstack - 策略不允许执行 os_compute_api:os-flavor-manage:create。(HTTP 403)
- c# - nodejs Net socket客户端与c#.net服务器应用程序通信
- php - 警告:strpos():第 XXXX 行 /XXX/post.php 中的空针
- python - Python 的 Serial 返回什么类型的 unicode?无法在 Python2.7 中解码(奇怪的输出)
- typescript - TypeScript 阻止文件成为模块?
- java - 在一个请求中设置多个参数