comments 被注册在所需的页面上,对于没有登录的人,如果他们想要留下 comments ,它会先进入网站,但后来 comments 是以匿名用户的名字注册的.我不想让这个登记发生. 应该编辑哪些部分以及如何编辑?

在views.py:

comments = Comment.objects.filter(product=product)

if request.method == 'POST':

    # comment

    if 'comment' in request.POST:
        author = request.user
        content = request.POST.get('content')
        comment = Comment(product=product, author=author, content=content)
        comment.save()


context = {
        'comments': comments, 
        }



return render(request, 'auctions/product_detail.html', context)

在product_Detail.html中:

<h3 id="h3">Comments</h3>

    {% if user.is_authenticated %}
        <ul>
            {% for comment in comments %}
                <li><a>{{ comment.author }} : {{comment.content}}</a></li>
            {% endfor %}
       </ul>   
    {% else %}
       Not signed in.
    {% endif %}

预先感谢您的帮助

推荐答案

您的if user.is_authenticated只在模板中,所以您只是根据用户的身份验证状态来决定是否向用户显示 comments .

在您的Django视图中,总是有一个用户与请求相关联.如果他们没有登录,那只是一个匿名用户.

您有几个选项:

  1. 您对该视图进行了身份验证判断,以便只有登录的用户才能访问该视图.
  2. 您在发布视图时判断用户的身份验证状态(您根本没有这样做--这是您判断它是否是发布的地方),如果他们没有登录,验证将失败,并且不会提交任何更改(即新的 comments ).您还设置了某种失败消息,以便用户知道他们必须登录才能发表 comments .

您需要在视图代码中执行此操作:

    if 'comment' in request.POST:
        author = request.user
        if author.is_authenticated:
            content = request.POST.get('content')
            comment = Comment(product=product, author=author, content=content)
            comment.save()

目前,这会保存 comments ,而不管是谁添加的.这里有request.user,所以在保存之前需要判断is_authenticated的值--只是如果他们没有经过身份验证就不要保存(我还建议您使用Messages框架来通知用户他们的 comments 没有保存,因为他们需要登录,但这是额外的,完全由您决定).

Python相关问答推荐

调试回归无法解决我的问题

Python:MultiIndex Dataframe到类似json的字典列表

来自ARIMA结果的模型方程

"如果发生特定错误,返回值

Tkinter滑动条标签.我不确定如何删除滑动块标签或更改其文本

如何销毁框架并使其在tkinter中看起来像以前的样子?

在Python和matlab中显示不同 colored颜色 的图像

如何使用Google Gemini API为单个提示生成多个响应?

更改matplotlib彩色条的字体并勾选标签?

Pystata:从Python并行运行stata实例

由于NEP 50,向uint 8添加-256的代码是否会在numpy 2中失败?

如何获取numpy数组的特定索引值?

pyscript中的压痕问题

如何在Polars中从列表中的所有 struct 中 Select 字段?

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

如何并行化/加速并行numba代码?

如何从需要点击/切换的网页中提取表格?

try 检索blob名称列表时出现错误填充错误""

当条件满足时停止ODE集成?

不允许 Select 北极滚动?