根据Django模型和我的multiple checkboxes
,我遇到了一些问题。形式。
我正在创建一个模板,可以选择一个适用于我的项目的主题。我已经编写了一个主题列表,其中包含相同的css文件,但背景颜色不同。
目标:用户选中此框,Django选择变量并根据此变量修改css路径。然后应用一个主题。
我创建了一个models.py
文件:
#-*- coding: utf-8 -*-
from django.db import models
from django.utils.encoding import force_text
# 2 themes : Datasystems & Cameroun
FAVORITE_THEME = (
('Datasystems', 'Datasystems'),
('Cameroun', 'Cameroun'),
)
class Theme(models.Model):
favorite_theme = models.CharField(max_length=20, choices=FAVORITE_THEME)
然后我的forms.py
文件:
#-*- coding: utf-8 -*-
from django import forms
from .models import Theme
class ThemeForm(forms.ModelForm):
favorite_theme = forms.MultipleChoiceField(
label = "Choisissez le thème à appliquer",
widget=forms.CheckboxSelectMultiple,
)
class Meta:
model = Theme
fields = '__all__'
views.py
文件非常简单:
#-*- coding: utf-8 -*-
import os
from django.shortcuts import render, reverse
from django.http import HttpResponseRedirect, HttpResponse
from .forms import ThemeForm
from .models import Theme
def Theme(request) :
if request.method == 'POST':
form = ThemeForm(request.POST or None)
if 'save' in request.POST :
post = form.save()
return HttpResponseRedirect(reverse('Theme_selected'))
else:
form = ThemeForm()
context = {
"form":form,
}
return render(request, 'Theme.html', context)
最后我的template.html
只显示表单:
{% extends 'Base_Configurations.html' %}
{% load staticfiles %}
{% block content %}
<style>
.form {
text-align: center;
}
</style>
<form class = "form" method='POST' action=''> {% csrf_token %}
<h3> <span class="glyphicon glyphicon-file"></span> Choix du thème DatasystemsEC </h3>
<br></br>
{{ form }}
<br></br>
<input class="button" type ="submit" name="save" value="Valider le thème" />
</form>
{% endblock content %}
我的问题是:我没有到达我的模板页面,并带有正确的复选框。
我看过这个教程或SO问题:
谢谢你能帮助我!
编辑:
我删除了我的models.py文件,我的forms.py文件看起来像这样(根据@DanielRoseman回答):
#-*- coding: utf-8 -*-
from django import forms
FAVORITE_THEME = (
('Datasystems', 'Datasystems'),
('Cameroun', 'Cameroun'),
)
class ThemeForm(forms.Form):
favorite_theme = forms.ChoiceField(choices=FAVORITE_THEME, label = "Choisissez le thème à appliquer", widget=forms.RadioSelect())