Django 编写一级菜单

Django是一种开源的大而且全的Web应用框架,是由python语言来编写的

Django创建完成,需要先修改Django settings.py配置文件

1:先修改数据库连接

DATABASES = {
    'default': {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "gmrz_crm",
        "USER": "root",
        "PASSWORD": "admin",
        "HOST": "127.0.0.1",
        "POST": 3306
    }
}

2:新建静态存储目录(statics)。并修改配置文件

STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'statics')
]

 

一般项目是从 URL ----> views ---> model ----> HTML

URL:

 

from django.conf.urls import url,include
from depart.views import depart

urlpatterns = [
    # 展示部门URL
    url(r'depart/list/', depart.depart_list,name="depart_list"),
    # 添加部门URL    
    url(r'depart/add/', depart.depart_add,name="depart_add"),
    # 编辑部门URL
    url(r'depart/edit/(\d+)', depart.depart_edit,name="depart_edit"),
    # 删除部门URL
    url(r'depart/del/', depart.depart_del,name="depart_del"),
]

 

views/depart

#!/usr/bin/env python
# coding=utf-8

from django.shortcuts import HttpResponse,render,reverse,redirect
from depart import models
from django import forms

# 展示部门列表
def depart_list(request):
    depart_all = models.Depart.objects.all()
    return render(request,'depart_list.html',{"depart_all":depart_all})

# 根据数据库字段进行初始化
class DepartForm(forms.ModelForm):
    class Meta:
        model = models.Depart
        fields = "__all__"

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        for field in self.fields.values():
            field.widget.attrs['class'] = 'form-control'     # 为每个字段添加样式

# 添加部门
def depart_add(request):
# 对类进行实例化 depart_obj = DepartForm() if request.method == "POST": depart_obj = DepartForm(data=request.POST) if depart_obj.is_valid(): depart_obj.save() return redirect(reverse('depart_list')) return render(request,"change.html",{'form_obj':depart_obj}) # 编辑部门 def depart_edit(request,id): edit_obj = models.Depart.objects.filter(id=id).first() depart_obj = DepartForm(instance=edit_obj) if request.method == "POST": depart_obj = DepartForm(instance=edit_obj,data=request.POST) if depart_obj.is_valid(): depart_obj.save() return redirect(reverse('depart_list')) return render(request,'change.html',{"form_obj":depart_obj}) # 删除部门 def depart_del(request): del_id = request.GET.get("id") models.Depart.objects.filter(id=del_id).delete() return redirect(reverse('depart_list'))

models (数据库)

from django.db import models
# Create your models here.

# 部门
class Depart(models.Model):
    id = models.AutoField(primary_key=True)
    depart_name = models.CharField(max_length=32,verbose_name="部门名称")

    def __str__(self):
        return self.depart_name

    

HTML

部门展示的html

{% extends 'layout.html' %}

{% block content %}
    <a href="{% url 'depart_add' %}"><button class="btn btn-info btn-sm">添加</button></a>
    <table class="table table-striped table-bordered" style="margin-top:5px">
        <thead>
            <tr>
                <th>编号</th>
                <th>部门名称</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
        {% for depart in depart_all %}
            <tr class="del_{{ depart.pk }}">
                <td>{{ forloop.counter }}</td>
                <td>{{ depart.depart_name }}</td>
                <td>
                    <a href="{% url 'depart_edit' depart.id %}"><button class="btn btn-primary btn-sm">编辑</button></a>
                    <button del_id ="{{ depart.pk }}" type="button" class="btn btn-warning btn-sm btn-del">删除</button>
                </td>
            </tr>

        {% empty %}
            <tr>
                <td colspan="3" style="color: red;text-align: center">暂无数据</td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
{% endblock %}

{# 使用ajax删除相关数据,添加模态框 #}
{% block js%}
    <script>
        $(".btn-del").on("click", function () {
            var deleteId = $(this).attr("del_id");
            layer.confirm('是否删除?',
                {
                    btn: ['容我三思', '是的,确定删除'] //按钮
                }, function () {
                    layer.msg('好的,请慎重',
                        {time: 2000});
                }, function () {
                    $('.del_' + deleteId).remove();
                    $.ajax({
                        url: "/gmrz/depart/del/",
                        type: "get",
                        data: {"id": deleteId},
                        success: function (data) {
                            layer.msg('删除成功',
                                {
                                    time: 2000 //2s后自动关闭
                                });
                        }
                    });
                });
        });
    </script>
{% endblock %}

change.html  

{% extends 'layout.html' %}

{% block content %}
    <form class="form-horizontal" role="form" method="post" style="margin-top: 10px">
        {% csrf_token %}
        {% for filed in form_obj %}
            <div class="form-group">
            <label for="{{ filed.id_for_label }}" class="col-sm-2 control-label">{{ filed.label }}</label>
            <div class="col-sm-5">
                {{ filed }}
            </div>
        </div>
        {% endfor %}
        <div class="form-group">
            <div class="col-sm-offset-3 col-sm-10">
                <button type="submit" class="btn btn-default">提交</button>
            </div>
        </div>
    </form>
{% endblock %}

  

 

posted @ 2019-01-16 22:54  为生活而努力  阅读(491)  评论(0)    收藏  举报