如何在Django中将参数传递给基于类的视图?

用户名

我有一个基于类的视图,它显示登录表单。问题是我无法显示错误消息。我试图在URL的参数中发送错误消息,以在HTML模板文件中显示该错误消息。但这是行不通的。

到目前为止,这是我的代码:

表格

# a class which act as a view - it displays the login-form
class LoginForm(AuthenticationForm, BaseLoginView):
    username=forms.CharField(widget=forms.TextInput(attrs={'class':'form-control'}))
    password=forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control'}))

    def get_context_data(self, **kwargs):
        context = super(LoginForm, self).get_context_data(**kwargs)
        context['error'] = ''
        return context

urls.py

urlpatterns = [
    path('login/', views_auth.LoginView.as_view(form_class=LoginForm, redirect_authenticated_user=True), name='login'), # login-page
]

views.py

# login functionality for the user
def custom_user_login(request):
    if request.method == 'GET':
        error_message = ''
        return redirect('home')

    elif request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        error_message = ''        

        # if the username & password is correct
        user = authenticate(request, username=username, password=password)
        if user is not None:

            # Redirecting to the required login according to user type (admin / regular-user)
            if user.is_superuser or user.is_staff:
                login(request, user)
                return redirect('admin_section/')
            else:
                login(request, user)
                return redirect('/') 

        # display error message
        else:
            base_url = reverse('login')  # /login/
            query_string =  urlencode({'error': 'The username & password combination are incorrect - please try again!'})  # error=The username & password combination are incorrect - please try again!
            url = '{}?{}'.format(base_url, query_string) # /login/?error=The username & password combination are incorrect - please try again!
            return redirect(url)  # redirects to the login page with an error-message

login.html

<!-- error message -->
<div id="error" class="alert alert-danger alert-dismissible" role="alert">
    <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
    {{ view.error }}
</div> 





<form method="post" action="{% url 'custom_login' %}">
  {% csrf_token %}

  {% for field in form %}

  <div class="form-group row">
     {{ field.errors }}
     <label for="{{ field.name }}" class="col-md-4 col-form-label text-md-right">{{ field.label }}</label>
     <div class="col-md-6">
        {{ field }}
     </div>
  </div>  

  {% endfor %}

  <div class="col-md-6 offset-md-4">
      <button type="submit" class="btn btn-primary">
         Login
      </button>
  </div>                                          
</form>
格雷格·卡莱卡(Greg Kaleka)

您无需手动收集,添加到上下文中并显示错误。表单本身存储错误。field.errors在模板中调用时,您已经遇到了特定于字段的错误,但是您也可以使用来获取非特定于字段的错误form.errors有关更多详细信息,请参见关于表单错误的Django文档

顺便说一句,您可以在模板中显示来自url的GET变量。只需使用{{ request.GET.error }}同样,无需在URL本身中编码错误消息。这不是解决此问题的好方法,Django已经为您解决了这一问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在HTML页面上将多个kwargs参数传递给基于Django类的视图(ListView)?

来自分类Dev

如何在基于类的视图的上下文中传递给Django中的模板?

来自分类常见问题

如何在Django中将参数传递给表单?

来自分类Dev

如何在Django中将可选参数传递给url

来自分类Dev

如何在Django中将多个参数传递给URL

来自分类Dev

如何在Django中将参数传递给计划的cron任务?

来自分类Dev

基于Django类的视图访问传递的参数

来自分类Dev

如何在Django中将基于函数的视图集成到基于类的视图中?

来自分类Dev

如何在Django中将此基于函数的视图转换为基于类的视图

来自分类Dev

如何在 Django 中将基于函数的视图转换为基于类的视图

来自分类Dev

从重定向将参数传递给基于类的视图

来自分类Dev

能否在Django中将模型作为参数传递给视图函数?

来自分类Dev

如何在视图中将字符串参数传递给url?

来自分类Dev

如何在视图中将字符串参数传递给url?

来自分类Dev

如何在Java中将泛型列表类作为参数传递给泛型方法?

来自分类Dev

如何在Java中将泛型列表类作为参数传递给泛型方法?

来自分类Dev

在基于Django类的视图中传递查询参数

来自分类Dev

如何在SwiftUI中将@namespace传递给多个视图?

来自分类Dev

如何在SwiftUI中将通用视图传递给结构

来自分类Dev

如何在Django的基于类的视图中传递使用请求的上下文变量?

来自分类Dev

如何在MVC中将参数传递给GenericController构造函数?

来自分类Dev

如何在C#中将参数传递给线程?

来自分类Dev

如何在墨西哥舒适沙发中将参数传递给局部?

来自分类Dev

如何在Golang中将变量参数传递给Sprintf

来自分类Dev

如何在angularjs中将参数传递给$ http?

来自分类Dev

如何在Java中将函数作为参数传递给Callable

来自分类Dev

如何在Perl中将参数传递给系统命令

来自分类Dev

如何在Request中将参数传递给重定向路由

来自分类Dev

如何在Javascript OO中将参数传递给子方法

Related 相关文章

  1. 1

    如何在HTML页面上将多个kwargs参数传递给基于Django类的视图(ListView)?

  2. 2

    如何在基于类的视图的上下文中传递给Django中的模板?

  3. 3

    如何在Django中将参数传递给表单?

  4. 4

    如何在Django中将可选参数传递给url

  5. 5

    如何在Django中将多个参数传递给URL

  6. 6

    如何在Django中将参数传递给计划的cron任务?

  7. 7

    基于Django类的视图访问传递的参数

  8. 8

    如何在Django中将基于函数的视图集成到基于类的视图中?

  9. 9

    如何在Django中将此基于函数的视图转换为基于类的视图

  10. 10

    如何在 Django 中将基于函数的视图转换为基于类的视图

  11. 11

    从重定向将参数传递给基于类的视图

  12. 12

    能否在Django中将模型作为参数传递给视图函数?

  13. 13

    如何在视图中将字符串参数传递给url?

  14. 14

    如何在视图中将字符串参数传递给url?

  15. 15

    如何在Java中将泛型列表类作为参数传递给泛型方法?

  16. 16

    如何在Java中将泛型列表类作为参数传递给泛型方法?

  17. 17

    在基于Django类的视图中传递查询参数

  18. 18

    如何在SwiftUI中将@namespace传递给多个视图?

  19. 19

    如何在SwiftUI中将通用视图传递给结构

  20. 20

    如何在Django的基于类的视图中传递使用请求的上下文变量?

  21. 21

    如何在MVC中将参数传递给GenericController构造函数?

  22. 22

    如何在C#中将参数传递给线程?

  23. 23

    如何在墨西哥舒适沙发中将参数传递给局部?

  24. 24

    如何在Golang中将变量参数传递给Sprintf

  25. 25

    如何在angularjs中将参数传递给$ http?

  26. 26

    如何在Java中将函数作为参数传递给Callable

  27. 27

    如何在Perl中将参数传递给系统命令

  28. 28

    如何在Request中将参数传递给重定向路由

  29. 29

    如何在Javascript OO中将参数传递给子方法

热门标签

归档