Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.utils import translation
- user_language = 'fr'
- translation.activate(user_language)
- request.session[translation.LANGUAGE_SESSION_KEY] = user_language
- MIDDLEWARE = [
- 'django.middleware.security.SecurityMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.locale.LocaleMiddleware',
- 'django.middleware.common.CommonMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'django.middleware.clickjacking.XFrameOptionsMiddleware',
- ]
- # Authentication
- ## Not sure if these two are necessary, but one of the many tutorials I've been looking at suggested I do them.
- LOGIN_REDIRECT_URL = '/' # It means home view
- LOGIN_URL = 'login'
- # Internationalization
- # https://docs.djangoproject.com/en/1.10/topics/i18n/
- LANGUAGE_CODE = 'en-AU'
- TIME_ZONE = 'UTC'
- USE_I18N = True
- USE_L10N = True
- USE_TZ = True
- LANGUAGES = (
- ('en', _('English')),
- ('de', _('German')),
- )
- <div class="nav navbar-nav pull-md-right">
- {% if user.is_authenticated %}
- {# Translators: Welcome message, of the form "Welcome, [user's first name] [user's surname]!" #}
- <span class="nav-item nav-link text-muted">{% blocktrans with first_name=user.first_name last_name=user.last_name %}Welcome, {{ first_name }} {{ last_name }}!{% endblocktrans %}</span>
- <a class="nav-item nav-link" href="{% url 'logout' %}">{% trans "Sign out" %}</a>
- {% else %}
- <a class="nav-item nav-link" href="#">{% trans "Register" %}</a>
- <a class="nav-item nav-link" href="{% url 'login' %}">{% trans "Sign in" %}</a>
- {% endif %}
- </div>
- {% extends 'appname/base.html' %}
- {% load staticfiles %}
- {% load i18n %}
- {% block title_block %}{% trans "Sign in" %}{% endblock %}
- {% block header_block %}
- <link href="{% static 'css/login.css' %}" rel="stylesheet">
- {% endblock %}
- {% block body_block %}
- <div class="container">
- {% if form.errors %}
- <div class="form-signin alert-danger">
- <!-- Display this message even for an inactive account. -->
- {% trans "Your login details were invalid. Please try again." %}
- </div>
- {% endif %}
- {% if next %}
- <div class="form-signin alert-danger">
- {% if user.is_authenticated %}
- {% trans "Your account doesn't have access to this page. To proceed, please login with an account that has access." %}
- {% else %}
- {% trans "Please log in to see this page." %}
- {% endif %}
- </div>
- {% endif %}
- <form class="form-signin" method="post" action="{% url 'login' %}">
- {% csrf_token %}
- <h2 class="form-signin-heading">{% trans "Please sign in" %}</h2>
- {{ form.username.label_tag}}
- {{ form.username }}
- {{ form.password.label_tag}}
- {{ form.password }}
- <div class="checkbox">
- <!-- Not yet implemented. Probably stick this into the form as well. -->
- <label>
- <input type="checkbox" value="remember-me"> {% trans "Remember me" %}
- </label>
- </div>
- <div class="">
- Forgot login
- </div>
- <button class="btn btn-lg btn-primary btn-block" type="submit">{% trans "Sign in" %}</button>
- <input type="hidden" name="next" value="{{ next }}" />
- </form>
- </div>
- {% endblock %}
- from django.shortcuts import render
- from django.http import HttpResponse
- from django.http import HttpResponseRedirect
- from django.contrib.auth import authenticate, login
- from django.contrib.auth.models import User
- from django.utils import translation
- from django.utils.translation import LANGUAGE_SESSION_KEY
- from django import forms
- from appname.forms import LoginForm
- def index(request):
- # Hack. I'm sure this is not the right thing to do.
- user_language = request.session.get(LANGUAGE_SESSION_KEY)
- translation.activate(user_language)
- # Do stuff
- return render(request, 'appname/index.html', context=context_dict)
- def login_user(request):
- user_language = request.session.get(LANGUAGE_SESSION_KEY)
- translation.activate(user_language)
- if request.method == "POST":
- form = LoginForm(request, data=request.POST)
- username = request.POST['username']
- password = request.POST['password']
- if form.is_valid():
- fw_username = form.cleaned_data['username']
- fw_password = form.cleaned_data['password']
- user = authenticate(username=fw_username, password=fw_password)
- if user is not None and user.is_active:
- login(request, user)
- user_language = user.extended.language_code.language_code
- translation.activate(user_language)
- request.session[LANGUAGE_SESSION_KEY] = user_language
- return HttpResponseRedirect('/')
- else:
- form = LoginForm() # Display unbound form
- return render(request, 'appname/login.html', { 'form': form })
- def us(request):
- # Hack. I'm sure this is not the right thing to do.
- user_language_code = request.session.get(LANGUAGE_SESSION_KEY)
- translation.activate(user_language_code)
- return render(request, 'appname/us.html')
- from django.conf.urls import url, include
- from django.conf.urls.static import static
- from django.conf import settings
- from django.contrib import admin
- from django.contrib.auth import views as auth_views
- from appname import views
- from appname.forms import LoginForm
- urlpatterns = [
- url(r'^$', views.index, name='index'),
- url(r'^appname/', include('appname.urls')), # Any URLs starting with appname are to be handled by the mindatot app
- # url(r'^login/$', auth_views.login, {'template_name': 'appname/login.html', 'authentication_form': LoginForm}, name='login'),
- url(r'^login/$', views.login_user, name='login'),
- url(r'^logout/$', auth_views.logout, {'next_page': 'login'}, name='logout'),
- url(r'^admin/', admin.site.urls),
- ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
- from django.contrib.auth.forms import AuthenticationForm
- from django import forms
- from django.utils import translation
- from django.utils.translation import ugettext as _
- # If you don't do this you cannot use Bootstrap CSS
- class LoginForm(AuthenticationForm):
- # I'm confused. How do I translate this one?
- #user_language = session.get(LANGUAGE_SESSION_KEY)
- #translation.activate(user_language)
- 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.PasswordInput(attrs={'class': 'form-control', 'name': 'password'}))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement