用户使用表单django在登录页面上选择语言 [英] User selects language on login page using form django

查看:288
本文介绍了用户使用表单django在登录页面上选择语言的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有以下表单的登录页面:

 < form class =login-formname = LoginFormaction ={%url'login'%}method =post> 
{%csrf_token%}
< p>
< table>
< tr>
< td> {{form.username.label_tag}}< / td>
< td> {{form.username}}< / td>
< / tr>
< tr>
< td> {{form.password.label_tag}}< / td>
< td> {{form.password}}< / td>
< / tr>
< / table>
< / p>
< input class =button button-smalltype =submitvalue =Login/>
< input type =hiddenname =nextvalue ={{next}}/>
< / form>
< a>英文< / a>
< a>法语< / a>

我有一个如下的forms.py:


$来自django.contrib.auth.forms导入的
$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $


$ b username = forms.CharField(label =Username,max_length = 30,
widget = forms.TextInput(attrs = {'class':'form-control','name':'username'})
password = forms.CharField(label =Password,max_length = 30,
widget = forms.TextInput(attrs = {'type':'password','name':'password' class':'form-control'}))

和urls.py看起来像这样:来自django.contrib的url
从django导入admin


 从django.conf.urls导入包含。 contrib.auth导入视图作为auth_views 
从stellar.forms import LoginForm
从stellar.views import index2
from django.conf .urls.i18n import i18n_patterns
urlpatterns = [
url(r'^ admin /',admin.site.urls),
url(r'^',include('example.urls ')),
url(r'^ login / $',auth_views.login,{'template_name':'login.html','authentication_form':LoginForm},name ='login'),
url(r'^ logout / $',auth_views.logout,{'next_page':'/ login'}),
url(r'^ i18n /',include('django.conf.urls.i18n ')),
]

基本上,如果用户点击英语或法语,的页面应该改变。如何执行此操作?

解决方案

您应该在认证方式之下创建另一个表单,如这个

  {%load i18n%} 

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

...

按照说明从那里,你会很好!



让我知道如果这样工作。


I have a login page with the following form:

  <form class="login-form" name="LoginForm" action="{% url 'login' %}" method="post">
  {% csrf_token %}
    <p>
        <table>
            <tr>
                <td>{{ form.username.label_tag }} </td>
                <td>{{ form.username }}</td>
            </tr>
            <tr>
                <td>{{ form.password.label_tag }}</td>
                <td>{{ form.password }}</td>
            </tr>
        </table>
    </p>
    <input class="button button-small" type="submit" value="Login" />
    <input type="hidden" name="next" value="{{ next }}" />
  </form>
  <a>English</a>
  <a>French</a>

and I have a forms.py that looks like this:

from django.contrib.auth.forms import AuthenticationForm 
from django import forms

class LoginForm(AuthenticationForm):
    username = forms.CharField(label="Username", max_length=30, 
                               widget=forms.TextInput(attrs={'class': 'form-control', 'name': 'username'}))
    password = forms.CharField(label="Password", max_length=30, 
                               widget=forms.TextInput(attrs={'type': 'password', 'name': 'password', 'class': 'form-control'}))

and urls.py that looks like this:

from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.auth import views as auth_views
from stellar.forms import LoginForm
from stellar.views import index2
from django.conf.urls.i18n import i18n_patterns
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('example.urls')),
    url(r'^login/$', auth_views.login, {'template_name': 'login.html', 'authentication_form': LoginForm}, name = 'login'),
    url(r'^logout/$', auth_views.logout, {'next_page': '/login'}),
    url(r'^i18n/', include('django.conf.urls.i18n')),
]

Basically, if the user clicks on English or French the language of the page should change. How do I go about doing this?

解决方案

You should make another form below the authenticated one like this.

{% load i18n %}

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

...

Follow the instructions from there and you'll be fine!

Let me know if that worked.

这篇关于用户使用表单django在登录页面上选择语言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆