如title所示,我试图在每个页面上发送当前用户创建的类别用户的名称。我最初的尝试只是
{% if user.is_authenticated == category.author %}
{{category.name}}
{% endif %}
但这只会在某个页面中显示类别,而我想在navbar中显示它,我将它包含在每个页面中。所以我想我应该在我的用户模型中做category = models.foreignkey('category')
,但是被告知我应该在模板上下文处理器中设置一个queryset。我不确定这是不是最好的办法。
有人能告诉我怎么做这件事吗?你知道吗
这是我的密码
class Category(models.Model):
name = models.CharField(max_length=128, unique=True)
description = models.TextField()
author = models.ForeignKey(settings.AUTH_USER_MODEL)
在我的心里视图.py你知道吗
@login_required
def add_category(request):
if not request.user.is_superuser and Category.objects.filter(author=request.user).exists():
return render(request,'main/category_already_exists.html')
if request.method == 'POST':
category = Category(author=request.user)
form = CategoryForm(request.POST, request.FILES, instance=category)
if form.is_valid():
form.save(commit=True)
return redirect('category', category_name_url=category.name)
else:
form = CategoryForm()
context = {
"form":form
}
return render(request, 'main/add_category.html',context)
这是我简化的分类视图
def category(request, category_name_url):
category_name = decode_url(category_name_url)
category = Category.objects.get(name=category_name)
context = {
"category":category,
}
return render(request, "main/category.html", context)
这是我的用户模型 从用户模型导入UserEnableBaseProfile
class MyProfile(UserenaBaseProfile):
user = models.OneToOneField(User, unique=True, verbose_name=_('user'), related_name='my_profile')
您可以在
request.session
中添加此信息。你可以这样做:假设您的登录视图为:
在每个页面中显示此数据,如下所示:
并在每次添加新类别时更新类别列表,如下所示:
也许您应该编写自己的上下文处理器并将其包含在设置中。链接到文档https://docs.djangoproject.com/en/dev/ref/templates/api/#context-processors
Django文件的定义:
“上下文处理器是接收当前HttpRequest作为参数并返回要添加到呈现上下文的数据dict的函数。你知道吗
它们的主要用途是将所有模板共享的公共数据添加到上下文中,而不必在每个视图中重复代码。”
相关问题 更多 >
编程相关推荐