如何创建分级用户django
我有一个迷你博客和用户档案。在“用户配置文件”页面上,我显示以下信息:如何创建分级用户django,django,django-views,Django,Django Views,我有一个迷你博客和用户档案。在“用户配置文件”页面上,我显示以下信息: Comments count of this user; Posts count of this user; 我在模板userprofile中显示注释数,如下所示: {{user.comments.count}} def user(request, pk): user = User.objects.get(pk=pk) count_of_posts = user.posts.count() ti
Comments count of this user;
Posts count of this user;
我在模板userprofile中显示注释数,如下所示:
{{user.comments.count}}
def user(request, pk):
user = User.objects.get(pk=pk)
count_of_posts = user.posts.count()
titles = {
range(1, 10): 'Cat',
range(10, 20): 'Dog',
range(20, 30): 'Elephant'
# add more titles
}
user_title = ''
for key in titles:
if count_of_posts in key:
user_title = titles[key]
return render(request, 'user.html', {'user': user,
'user_title': user_title})
我想制作一个小型评级系统,例如:
如果用户留下了10条评论和10篇帖子,那么他就是一个猫(猫字)。如果20是狗(狗字)。
30-大象等 为此,我希望在数据库中有一个单独的表,这样我就可以根据用户评级进行选择 我如何实现这一点?看看这篇文章: 创建一个单独的
模型
并将用户标题
作为一种关系分配给用户会导致许多数据库转换,在这里,您只需使用计数
获取用户帖子
的值,然后使用带有范围
对象的自定义词典作为键来分配正确的标题
更新
要实现此功能,请执行以下操作:
{{user.comments.count}}
def user(request, pk):
user = User.objects.get(pk=pk)
count_of_posts = user.posts.count()
titles = {
range(1, 10): 'Cat',
range(10, 20): 'Dog',
range(20, 30): 'Elephant'
# add more titles
}
user_title = ''
for key in titles:
if count_of_posts in key:
user_title = titles[key]
return render(request, 'user.html', {'user': user,
'user_title': user_title})
更新2
既然你想把标签添加到用户列表中,除了在用户
模型中为它创建一个单独的字段,并在每次用户创建或删除帖子时用信息更新它之外,没有其他方法可以解决这个问题,下面是我对它的看法:
1.在用户模型中添加标题字段
型号.py
class User(models.Model): # your user model with your inheritance, disregard the 'models.Model' part, its just an example
# your User model fields
title = models.CharField('Title', max_length=50)
titles = { # add this dictionary seperately in your views file
range(1, 10): 'Cat',
range(10, 20): 'Dog',
range(20, 30): 'Elephant'
# add more titles
}
def index(request): # the view that handles post creation
if request.method == 'POST':
form = PostForm(request.POST) # your post form class
if form.is_valid():
new_post = form.save(commit=False)
new_post.user = request.user
new_post.save()
count_of_posts = request.user.posts.count()
for key in titles: # assign a title to the user and save it
if count_of_posts in key:
if request.user.title != titles[key]:
request.user.title = titles[key]
request.user.save()
else:
form = PostForm()
return render(request, 'index.html', {'form': form})
def delete_post(request):
# create a similar check but call it when deleting a post
def user_list(request): #template below
users = User.objects.all()
return render(request, 'user_list.html', {'users', users})
def user(request, pk): # template below
user = User.objects.get(pk=pk)
return render(request, 'user.html', {'user': user})
二,。在您的视图中当您创建(或删除)一篇帖子时,检查当前用户的帖子计数,如果值更改,则分配新的标题,并保存它
视图.py
class User(models.Model): # your user model with your inheritance, disregard the 'models.Model' part, its just an example
# your User model fields
title = models.CharField('Title', max_length=50)
titles = { # add this dictionary seperately in your views file
range(1, 10): 'Cat',
range(10, 20): 'Dog',
range(20, 30): 'Elephant'
# add more titles
}
def index(request): # the view that handles post creation
if request.method == 'POST':
form = PostForm(request.POST) # your post form class
if form.is_valid():
new_post = form.save(commit=False)
new_post.user = request.user
new_post.save()
count_of_posts = request.user.posts.count()
for key in titles: # assign a title to the user and save it
if count_of_posts in key:
if request.user.title != titles[key]:
request.user.title = titles[key]
request.user.save()
else:
form = PostForm()
return render(request, 'index.html', {'form': form})
def delete_post(request):
# create a similar check but call it when deleting a post
def user_list(request): #template below
users = User.objects.all()
return render(request, 'user_list.html', {'users', users})
def user(request, pk): # template below
user = User.objects.get(pk=pk)
return render(request, 'user.html', {'user': user})
三,。创建您的模板
用户列表.html
{% for user in users %}
{{ user }} is a {{ user.title }}
{% endfor %}
{{ user }} is a {{ user.title }}
user.html
{% for user in users %}
{{ user }} is a {{ user.title }}
{% endfor %}
{{ user }} is a {{ user.title }}
谢谢你的提示,如果你能帮助我使用语法检查更新的版本,我会非常感激的。这应该很有效。谢谢,你能告诉我如何在模板中显示这个吗?(标记)以及如何在单独的页面上通过评级显示用户列表?我已经更新了答案,请查看update2
部分:)非常感谢您提供的详细答案!一旦我到了计算机,我一定会按照你的例子来实现它。