相关文章推荐
细心的毛巾  ·  sqlite str to int-掘金·  1 年前    · 
激动的书包  ·  flatpickr ...·  1 年前    · 
if request.method == 'GET' : tags = TagModel.objects.all() return render(request, 'books_add.html' , { 'tags' : tags}) elif request.method == 'POST' : title = request.POST.get( 'title' , None ) content = request.POST.get( 'content' , None ) blogModel = BlogModel(title=title, content=content, author=AuthorModel.objects.get(id= 1 )) blogModel.save() # 获取复选框的值,是一个选中的数组 tags = request.POST.getlist( 'tags' ) # 循环遍历所有选中的复选框,利用多对多的关系追加到数据库 for tag in tags: blogModel.tag.add(tag) return HttpResponseRedirect( 'book_add' ) else : return HttpResponse( u'是不被处理的请求方式' )
  • 2、前端页面
<div class="form-group">
    <label class="col-sm-2 control-label">标签</label>
    <div class="col-sm-9">
        {% for tag in tags %}
            <label class="checkbox-inline">
                <input value="{{ tag.id }}" type="checkbox" name="tags"/>{{ tag.name }}
            </label>
        {% endfor %}
    </div>
</div>
  • 3、进入编辑页面,先获取全部的复选框及选中的 id
# 编辑博客
def edit(request, blog_id):
    tags = TagModel.objects.all()
    # 利用正向查找关于本博客选择的tag
    blogModel = BlogModel.objects.filter(id=blog_id).first()
    # 获取全部的tag
    check_tag = blogModel.tag.all()
    # 获取选中的id
    check_id = [int(x.id) for x in check_tag]
    print check_id
    return render(request, 'books_edit.html', {'tags': tags, 'check_id': check_id})
  • 4、判断如果选中的就勾选
<div class="form-group">
    <label class="col-sm-2 control-label">标签</label>
    <div class="col-sm-9">
        {% for tag in tags %}
            {% if tag.id in check_id %}
                <label class="checkbox-inline">
                    <input value="{{ tag.id }}" type="checkbox" name="tags" checked="checked"/>{{ tag.name }}
                </label>
            {% else %}
                <label class="checkbox-inline">
                    <input value="{{ tag.id }}" type="checkbox" name="tags"/>{{ tag.name }}
                </label>
            {% endif %}
        {% endfor %}
    </div>
</div>

二、 ajax 提交的时候注意要把复选框转换字符串提交

  • 1、前端代码
$('#btn').on('click', function (e) {
            // 设置空数组
            var hobby = [];
            $('#hobby-group').find('input[type=checkbox]').each(function () {
                if ($(this).prop("checked")) {
                    var hobbyId = $(this).val();
                    hobby.push(hobbyId);
            console.log(hobby);
            $.ajax({
                'url': '/ajaxpost/',
                'method': 'post',
                'data': {
                    'username': $('.username').val(),
                    'hobby': hobby
                'traditional': true,
                'beforeSend': function (xhr, settings) {
                    var csrftoken = ajaxpost.getCookie('csrftoken');
                    //2.在header当中设置csrf_token的值
                    xhr.setRequestHeader('X-CSRFToken', csrftoken);
                'success': function (data) {
                    console.log(data);
  • 2、后端代码
@require_http_methods(['POST'])
def ajaxpost(request):
    form = LoginForm(request.POST)
    if form.is_valid():
        username = form.cleaned_data.get('username', None)
        # 获取复选框的值
        hobby = request.POST.getlist('hobby')
        print '*' * 100
        print hobby
        print '*' * 100
        return HttpResponse(u'成功')
    else:
        return HttpResponse(u'验证错误')
一、查询数据库遍历所有的复选框1、python查询数据库所有的tag# 新增文章def add(request): if request.method == 'GET': tags = TagModel.objects.all() return render(request, 'books_add.html', {'tags': tags}) el
大家好,我想用django在后台获取前台从checkbox传过来的值,判断选与未选,请问用什么方法,最好好个例子,谢谢 ==================== HTML code
Django的forms和models一样很牛逼。他有两种功能,一是生成form表单,还有就是form表单的验证。 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况。 1. 前端在展示checkbox时,希望设置一个默认选的选项。如下图: 先来看一下form是如何定义的: 也就是说我们要在前端生成页面的时候,让他把2那一项选,要怎么做呢? 方法一...
自用运维平台的权限系统有涉及到一个用户管理的功能,其包含了用户的角色修改,用户和角色是多对多的关系,前端编辑界面的角色展示为了减少更新麻烦,采用动态从后端获取角色列表,这样后端修改也不需要前端去做更新,管理界面的配置用户角色的地方需要用到复选框,因为是多对多,这里用js去完成修改后赋值到初始字段,使后端可以轻易的读取, 前端用户管理界面 点击编辑按钮,弹出对应的用户信息,这里是之前写的如何给子页面赋值 可以看到这里的角色是可以多选的,而且这些选项是动态从后端获取的。 动态获取角色(获取复选框).
# 复选 多选 模型 class Matching(models.Model): title = models.CharField(verbose_name='房屋配套', max_length=10, help_text='不能超多10个字') class Meta: verbose_name_plural = "配套多选" ###################################
Django ,html 页面通过 form 标签来传递表单数据。 对于复选框信息,即 checkbox 类型,点击 submit 后,数据将提交至 view 的函数。 我们通过request.POST.get() 函数来获取来自 html 页面的值,但是该函数只能 get 到选的最后一个值。 因此想要传递选的多个值,需要用 request.POST.getlist() 函数 该函数返回一个列表,可通过迭代来获取列表每一项的值。 补充知识:解决checkbox复选框传值,不选不传值的方案 解决checkbox复选框传值,不选不传值的方案 问题描述: 一个form表单的结
要在Visual Studio开始使用Django Web框架,需要按照以下步骤操作: 1. 安装PythonDjango:在Windows上安装PythonDjango很简单,您只需要下载Python并按照说明进行安装,然后使用pip安装Django。 2. 创建Django项目:在Visual Studio创建Django项目很容易,只需选择“Python Web”模板,然后选择“Django Web Project”即可。 3. 配置Django项目:在创建Django项目后,需要在项目设置配置Django。打开项目设置,选择“Python环境”并指定Python解释器路径,然后在“启动配置”选择“Django”和“manage.py runserver”。 4. 开始编写Django应用程序:在Visual Studio,您可以使用Django Web应用程序”模板来创建Django应用程序。可以使用Visual Studio的强大功能编写Django应用程序。 5. 运行Django应用程序:在Visual Studio,您可以使用调试器来运行Django应用程序。您只需点击“调试”按钮即可启动Django服务器并运行应用程序。 6. 部署Django应用程序:在Visual Studio,您可以使用Python Web部署”工具来部署Django应用程序。该工具可以将Django应用程序打包为Azure Web应用程序或Azure函数应用程序。