python - Django 自定义登录页面

标签 python django validation authentication

我有一个自定义的 Django 登录页面。我想在用户名或密码字段为空时抛出异常。我该怎么做?

我的view.py登录方法:

def user_login(request):
    context = RequestContext(request)
    if request.method == 'POST':
        # Gather the username and password provided by the user.
        # This information is obtained from the login form.
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        print("auth",str(authenticate(username=username, password=password)))

        if user:
            # Is the account active? It could have been disabled.
            if user.is_active:
                login(request, user)
                return HttpResponseRedirect('/')
        else:
            return HttpResponse("xxx.")
    else:
        # Bad login details were provided. So we can't log the user in.
        print ("Invalid login details: {0}, {1}".format(username, password))
        return HttpResponse("Invalid login details supplied.")
    else:
        return render_to_response('user/profile.html', {}, context)

我试过了,没用: 这是forms.py

def clean_username(self):
    username = self.cleaned_data.get('username')
    if not username:
        raise forms.ValidationError('username does not exist.')

最佳答案

可以使用Django提供的登录 View 。所以你的 login.html 应该看起来像那个例子。

<form class="login" method="POST" action="/login/">

  {% csrf_token %}

  {{form.as_p}}

  <li><input type="submit" class="logBut" value="Log in"/></li>
  </form>

记住 urls.py !

url(r'^login/$','django.contrib.auth.views.login', {'template_name': '/login.html'}),

关于python - Django 自定义登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773576/

相关文章:

python - 从 pandas 单元格内的列表中删除括号

python - 复杂的 Python JSON 对象到自定义字典的转换

javascript - Selenium 网络驱动程序可以访问 javascript 全局变量吗?

php - Laravel 5.4 - 如何为同一个自定义验证规则使用多个错误消息

asp.net - 处理请求验证 'silently'

python - Django Forbidden 403 Error "CSRF token missing or incorrect"已登录时尝试登录

python - 保存具有特定分辨率/像素密度的 Python SymPy 图形

javascript - 如何将自定义 DateRangePicker 小部件与 Django Filter 的 DateFromToRangeFilter 一起使用

python - 如何使用 django 中的模板过滤器计算列表中的出现次数并将其传递给模板

python - python中的字符串只接受字母数字字符和下划线