【发布时间】:2017-04-30 04:24:26
【问题描述】:
请注意,我是 Django 新手。我创建了一个简单的配置模型,我想用它在我的站点上设置一些全局设置。现在我只创建了一个替换主 css 文件的主题切换设置,但我无法将它加载到我的登录模板上。虽然在索引上工作正常。请帮忙!
观看次数:
from django.shortcuts import render, HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth import login, logout
from .forms import LoginForm
from .models import Configuration
def get_theme():
theme_name = Configuration.objects.only('theme_name').get().theme_name
context = {'theme_name': theme_name}
return context
def login_view(request):
form = LoginForm(request.POST or None)
if request.POST and form.is_valid():
user = form.login(request)
if user:
login(request, user)
return HttpResponseRedirect('index') # Redirect to a success page.
theme_name = get_theme()
context = theme_name.update({'login_form': form})
return render(request, 'registration/login.html', context)
def logout_user(request):
logout(request)
return HttpResponseRedirect('registration/login.html')
@login_required(login_url='login/')
def index(request):
theme_name = get_theme()
return render(request, 'base.html', theme_name)
Login.html 上的模板:
{% compress css %}
<link href="{% static 'base/css/style-'%}{{ theme_name }}.css" rel="stylesheet" type="text/css">
{% endcompress %}
Base.html 上的模板(工作):
{% compress css %}
<link href="{% static 'base/css/style-'%}{{ theme_name }}.css" rel="stylesheet" type="text/css">
<link href="{% static 'base/css/sidebar-menu.css' %}" rel="stylesheet" type="text/css">
{% endcompress %}
注意:我没有在我的登录页面上加载 Base.html,因为用户需要先登录才能看到 base.html 上的任何内容。如果我做错了,请告诉我。
提前感谢您的帮助。
编辑forms.py:
class LoginForm(forms.Form):
username = forms.CharField(max_length=255, required=True)
password = forms.CharField(widget=forms.PasswordInput, required=True)
def clean(self):
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
user = authenticate(username=username, password=password)
if not user or not user.is_active:
raise forms.ValidationError("Sorry, that login was invalid. Please try again.")
return self.cleaned_data
def login(self, request):
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
user = authenticate(username=username, password=password)
return user
【问题讨论】:
标签: django django-templates django-views