zoukankan      html  css  js  c++  java
  • 评论功能设计和用户登录

    1.实现评论功能的方式

    1>第三方社会化评论插件——>友言、多说、畅言、Dispqu、网易云跟帖

    2>Django评论库——>django-comment

    3>自己写代码

    评论库是个app,首先需要建好这个模型,根据这个模型进一步去拓展。

    2.创建评论模型

    评论对象(哪一篇文章,哪一篇公告之类的)

    评论内容(写了什么东西)

    评论时间

    评论者

    首先,创建app

    python manage.py startapp comment

    之后创建模型

    3.评论需要登录用户

    确保较低程度减少垃圾评论、也提高了评论门槛(第三方登录解决)、还可以通知用户。

    在views博客详情页面中,接收的request有user这个属性,可以把这个传到前端页面。Django1.8前端可以直接获取,因为使用的是render。

    在Django文档的User authentication in Django

    web请求中的身份验证:在前端判断用户是否登录。

    Django使用会话和中间件将身份验证系统连接到request objects

    它们request.user 在代表当前用户的每个请求上提供一个属性。如果当前用户尚未登录,则此属性将设置为的实例AnonymousUser,否则将是的实例User

    您可以使用来区分它们 is_authenticated,如下所示:

    {% if request.user.is_authenticated %}
    已登录
    {% else %}
    未登录
    <form action="{% url 'login' %}" method="POST">
    {% csrf_token %}
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit" value="登录">
    </form>
    {% endif %}
    未登录的情况下让它可以提交一个登录的表单,并设置好表单提交的url,之后在views中认证用户和登录用户。
    authenticaterequest = None**凭据
    使用authenticate()验证的一组凭据。它需要的凭据作为关键字参数,username并 password默认情况下,检查他们对每一个 认证后端
    并返回一个 
    User凭据是否有效的后端对象。如果凭证对于任何后端无效或如果后端引发PermissionDenied,则返回None
    from django.contrib.auth import authenticate
    user = authenticate(username='john', password='secret')
    if user is not None:
        # A backend authenticated the credentials
    else:
        # No backend authenticated the credentials

    如果您具有经过身份验证的用户,则希望附加到当前会话-这是通过一个
    login()函数完成的
    loginrequestuserbackend = None
    要从视图登录用户,请使用login()它需要一个HttpRequest对象和一个 User对象。 login()使用Django的会话框架在会话中保存用户ID。
    请注意,匿名会话期间的任何数据集在用户登录后都会保留在会话中。
    本示例说明了如何同时使用 authenticate()和 login()
    def login(request):
    username = request.POST.get('username','')
    password = request.POST.get('password','')
    user = auth.authenticate(request, username=username, password=password)
    if user is not None:
    auth.login(request, user)
    return redirect('/')
    else:
    return render(request,'error.html',{'message':'用户名或密码不正确'})
    先获取用户名和密码,之后通过authenticate()认证用户,如果认证通过则通过auth.login()登录用户,并跳转到指定页面,反之跳转到错误页面。
  • 相关阅读:
    oo第四次博客
    oo第三次博客
    oo第二次博客
    oo第一次博客
    OO第四次博客
    OO第三次博客总结
    第二次博客总结
    oo第一次博客总结
    oo第四次博客作业
    oo第三次博客作业
  • 原文地址:https://www.cnblogs.com/lag1/p/13861768.html
Copyright © 2011-2022 走看看