使用Django创建多个选择复选框

时间:2017-02-22 09:45:16

标签: python django checkbox

根据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())

0 个答案:

没有答案