Django项目实战之点餐系统第二章:后台管理子系统功能实现

Django项目实战之点餐系统第二章:后台管理子系统功能实现

一、项目基本设置

1、经过上一章的项目框架搭建,我们的项目框架如下图所示

Django项目实战之点餐系统第二章:后台管理子系统功能实现
2、打开hotelproject文件夹里面的settings.py文件,进行一些项目的基本设置,其中包括:

一、客户端访问设置

Django项目实战之点餐系统第二章:后台管理子系统功能实现

二、app注册

Django项目实战之点餐系统第二章:后台管理子系统功能实现
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myadmin',
    'web',
    'mobile',
]

把我们项目中的3个app进行注册之后,app功能才能生效

三、模板文件夹导入

Django项目实战之点餐系统第二章:后台管理子系统功能实现
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,"templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

这个时候会发现os报错,原因是没有导入os库,我们可以在settings.py文件的开头导入os库

Django项目实战之点餐系统第二章:后台管理子系统功能实现
import os

四、mysql数据库设置
本次点餐系统项目,有一个数据库可以供大家直接使用:
链接:https://pan.baidu.com/s/1QFWXt7VTXWt63RkR7pMUPw
提取码:eae0

Django项目实战之点餐系统第二章:后台管理子系统功能实现
密码写自己安装mysql数据库时候设置的密码
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'osdb',
        'HOST':'localhost',
        'USER':'root',
        'PASSWORD':'',
        'PORT':'3306'
    }
}

注意:当后端服务器开始跑之前,要先启动mysql服务器,不然后端系统会报错。

五、系统字体格式等设置

Django项目实战之点餐系统第二章:后台管理子系统功能实现
LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

六、静态文件的导入设置

Django项目实战之点餐系统第二章:后台管理子系统功能实现
STATICFILES_DIRS = [os.path.join(BASE_DIR,"static")]

二、实现后台管理首页展示

1、设置hotelproject文件里面的urls.py文件

Django项目实战之点餐系统第二章:后台管理子系统功能实现
from django.urls import path,include

urlpatterns = [

    path('', include('web.urls')),
    path('myadmin/', include('myadmin.urls')),
    path('mobile/', include('mobile.urls')),
]

2、分别在三个app文件夹中新建一个urls.py子路由文件,一个views文件夹,并删除它们里面的view.py文件

Django项目实战之点餐系统第二章:后台管理子系统功能实现
Django项目实战之点餐系统第二章:后台管理子系统功能实现
Django项目实战之点餐系统第二章:后台管理子系统功能实现
3、设置myadminwen文件夹里面的urls.py子路由文件
Django项目实战之点餐系统第二章:后台管理子系统功能实现
from django.urls import path
from myadmin.views import myadmin_index,myadmin_users
urlpatterns = [
    path('',myadmin_index.myadmin_index,name='myadmin_index' ),

    path('users',myadmin_users.myadmin_users_index,name='myadmin_users_index' ),
    path('users',myadmin_users.myadmin_users_add,name='myadmin_users_add' ),
    path('users',myadmin_users.myadmin_users_insert,name='myadmin_users_insert' ),
    path('users',myadmin_users.myadmin_users_delete,name='myadmin_users_delete' ),
    path('users',myadmin_users.myadmin_users_exdit,name='myadmin_users_exdit' ),
    path('users',myadmin_users.myadmin_users_update,name='myadmin_users_update' ),
]

4、在myadmin/views文件夹中新建两个视图文件:myadmin_index.py和myadmin_users.py
其中myadmin_index.py

Django项目实战之点餐系统第二章:后台管理子系统功能实现
from django.shortcuts import render
def myadmin_index(request):

    return render(request,"myadmin/myadmin_index.html")

其中myadmin_users.py

Django项目实战之点餐系统第二章:后台管理子系统功能实现
from django.shortcuts import render

def myadmin_users_index(request):
    pass

def myadmin_users_add(request):
    pass

def myadmin_users_insert(request):
    pass

def myadmin_users_delete(request):
    pass

def myadmin_users_exdit(request):
    pass

def myadmin_users_update(request):
    pass

5、在templates/myadmin文件夹中创建一个base.html父模板,内容如下:

{% load static %}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>订餐系统后台管理</title>
  <!-- 支持响应式布局 -->
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
  <link rel="stylesheet" href="{% static 'myadmin/bower_components/bootstrap/dist/css/bootstrap.min.css' %}">
  <!-- 象形字体 -->
  <link rel="stylesheet" href="{% static 'myadmin/bower_components/font-awesome/css/font-awesome.min.css' %}">
  <!-- 图标 -->
  <link rel="stylesheet" href="{% static 'myadmin/bower_components/Ionicons/css/ionicons.min.css' %}">
  <!-- 主题风格样式 -->
  <link rel="stylesheet" href="{% static 'myadmin/dist/css/AdminLTE.min.css' %}">
  <!-- AdminLTE 皮肤.这里选择的是skin-blue样式,我们还可以有其他皮肤可以选择. -->
  <link rel="stylesheet" href="{% static 'myadmin/dist/css/skins/skin-blue.min.css' %}">
  <!-- 兼容IE9以下浏览器 -->
  <!--[if lt IE 9]>
  <script src="local/js/html5shiv.min.js"></script>
  <script src="local/js/respond.min.js"></script>
  <![endif]-->
  <!-- Google Font -->
  <link rel="stylesheet" href="{% static 'myadmin/local/css/google_fonts.css' %}">
</head>
<body class="hold-transition skin-blue sidebar-mini">
<div class="wrapper">

  <!-- Main Header 主体页头 -->
  <header class="main-header">

    <!-- Logo -->
    <a href="index2.html" class="logo">
      <!-- 侧栏迷你徽标 mini 50x50 pixels -->
      <span class="logo-mini"><b>餐</b></span>
      <!-- 常规状态标志和移动设备标志 -->
      <span class="logo-lg"><b>订餐系统后台管理</b></span>
    </a>

    <!-- Header Navbar 首部导航栏 -->
    <nav class="navbar navbar-static-top" role="navigation">
      <!-- Sidebar toggle button 侧边栏切换按钮 -->
      <a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
        <span class="sr-only">切换导航</span>
      </a>
      <!-- 右栏菜单 -->
      <div class="navbar-custom-menu">
        <ul class="nav navbar-nav">
          <!-- messages-menu 消息菜单: 样式可以在 dropdown.less 中找到 -->
          <li class="dropdown messages-menu">
            <!-- Menu toggle button 菜单切换按钮 -->
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
              <i class="fa fa-envelope-o"></i>
              <span class="label label-success">4</span>
            </a>
            <ul class="dropdown-menu">
              <li class="header">你有4个短信息</li>
              <li>
                <!-- 内部菜单:包含消息 -->
                <ul class="menu">
                  <li><!-- start message 信息开始 -->
                    <a href="#">
                      <div class="pull-left">
                        <!-- User Image 使用图片 -->
                        <img src="{% static 'myadmin/dist/img/user2-160x160.jpg' %}" class="img-circle" alt="User Image">
                      </div>
                      <!-- 消息标题和时间 -->
                      <h4>
                        我们都支持团队
                        <small><i class="fa fa-clock-o"></i> 5 分钟</small>
                      </h4>
                      <!-- The message -->
                      <p>Why not buy a new awesome theme?</p>
                    </a>
                  </li>
                  <!-- end message -->
                </ul>
                <!-- /.menu -->
              </li>
              <li class="footer"><a href="#">查看所有信息</a></li>
            </ul>
          </li>
          <!-- /.messages-menu -->

          <!-- Notifications Menu 通知菜单 -->
          <li class="dropdown notifications-menu">
            <!-- Menu toggle button  菜单切换按钮 -->
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
              <i class="fa fa-bell-o"></i>
              <span class="label label-warning">10</span>
            </a>
            <ul class="dropdown-menu">
              <li class="header">你有10条通知信息</li>
              <li>
                <!-- Inner Menu: contains the notifications -->
                <ul class="menu">
                  <li><!-- start notification -->
                    <a href="#">
                      <i class="fa fa-users text-aqua"></i> 今天有5名新成员加入
                    </a>
                  </li>
                  <!-- end notification -->
                </ul>
              </li>
              <li class="footer"><a href="#">查看全部</a></li>
            </ul>
          </li>
          <!-- Tasks Menu 任务菜单 -->
          <li class="dropdown tasks-menu">
            <!-- Menu Toggle Button 菜单切换按钮 -->
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
              <i class="fa fa-flag-o"></i>
              <span class="label label-danger">9</span>
            </a>
            <ul class="dropdown-menu">
              <li class="header">你有9个任务</li>
              <li>
                <!-- Inner menu: contains the tasks -->
                <ul class="menu">
                  <li><!-- Task item -->
                    <a href="#">
                      <!-- Task title and progress text -->
                      <h3>
                        设计一些按钮
                        <small class="pull-right">20%</small>
                      </h3>
                      <!-- The progress bar -->
                      <div class="progress xs">
                        <!-- Change the css width attribute to simulate progress -->
                        <div class="progress-bar progress-bar-aqua" style="width: 20%" role="progressbar"
                             aria-valuenow="20" aria-valuemin="0" aria-valuemax="100">
                          <span class="sr-only">20% 完成</span>
                        </div>
                      </div>
                    </a>
                  </li>
                  <!-- end task item -->
                </ul>
              </li>
              <li class="footer">
                <a href="#">查看所有任务</a>
              </li>
            </ul>
          </li>
          <!-- User Account Menu -->
          <li class="dropdown user user-menu">
            <!-- Menu Toggle Button -->
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
              <!-- The user image in the navbar-->
              <img src="{% static 'myadmin/dist/img/user2-160x160.jpg' %}" class="user-image" alt="User Image">
              <!-- hidden-xs hides the username on small devices so only the image appears. -->
              <span class="hidden-xs">张无忌</span>
            </a>
            <ul class="dropdown-menu">
              <!-- The user image in the menu -->
              <li class="user-header">
                <img src="{% static 'myadmin/dist/img/user2-160x160.jpg' %}" class="img-circle" alt="User Image">

                <p>
                  张无忌 - 管理员
                  <small>2020年07月16日加入</small>
                </p>
              </li>
              <!-- Menu Footer-->
              <li class="user-footer">
                <div class="pull-left">
                  <a href="#" class="btn btn-default btn-flat">个人信息</a>
                </div>
                <div class="pull-right">
                  <a href="#" class="btn btn-default btn-flat">退 出</a>
                </div>
              </li>
            </ul>
          </li>

        </ul>
      </div>
    </nav>
  </header>

  <!-- 左侧柱。包含徽标和边栏 -->
  <aside class="main-sidebar">

    <!-- sidebar: style can be found in sidebar.less -->
    <section class="sidebar">

      <!-- Sidebar user panel (optional) -->
      <div class="user-panel">
        <div class="pull-left image">
          <img src="{% static 'myadmin/dist/img/user2-160x160.jpg' %}" class="img-circle" alt="User Image">
        </div>
        <div class="pull-left info">
          <p>张无忌 . 管理员</p>
          <!-- Status -->
          <a href="#"><i class="fa fa-circle text-success"></i> 在线</a>
        </div>
      </div>

      <!-- Sidebar Menu -->
      <ul class="sidebar-menu" data-widget="tree">
        <li class="header">主要导航</li>
        <!-- 导航列表,你可以自行更改图标 -->
        <li class="active"><a href="admin.html"><i class="fa fa-home"></i> <span>首页</span></a></li>

        <li><a href="member.html"><i class="fa fa-users"></i> <span>会员管理</span></a></li>
        <li><a href="shop.html"><i class="fa fa-sitemap"></i> <span>店铺管理</span></a></li>
        <li class="treeview">
          <a href="category.html"><i class="fa fa-cutlery"></i> <span>菜品管理</span>
            <span class="pull-right-container">
              <i class="fa fa-angle-left pull-right"></i>
            </span>
          </a>
          <ul class="treeview-menu">
            <li><a href="category.html"> <i class="fa fa-circle-o"></i> 菜品分类</a></li>
            <li><a href="product.html"> <i class="fa fa-circle-o"></i> 菜品信息</a></li>
          </ul>
        </li>
        <li><a href="orders.html"><i class="fa fa-shopping-cart"></i> <span>订单管理</span></a></li>
        <li><a href="#"><i class="fa fa-user"></i> <span>账号管理</span></a></li>
        <li><a href="#"><i class="fa fa-key"></i> <span>权限管理</span></a></li>
        <li><a href="#"><i class="fa fa-gear"></i> <span>系统配置</span></a></li>
        <li><a href="#"><i class="fa fa-unlock-alt"></i> <span>认证体系</span></a></li>
      </ul>
      <!-- /.sidebar-menu -->
    </section>
    <!-- /.sidebar -->
  </aside>

  <!-- Content Wrapper. Contains page content -->
  <div class="content-wrapper">
    <!-- Content Header (Page header) -->
   {% block main_content %}

   {% endblock %}
    <!-- /.content -->
  </div>
  <!-- /.content-wrapper -->

  <!-- Main Footer -->
  <footer class="main-footer">
    <!-- To the right -->
    <div class="pull-right hidden-xs">
      <!--餐饮管理平台-->
    </div>
    <!-- Default to the left -->
    <strong>Copyright &copy; 2020 <a href="#">北京****有限公司</a>.</strong> 版权所有
  </footer>

  <!-- 添加侧栏的背景。必须放置此处紧接在控制侧边栏之后 -->
  <div class="control-sidebar-bg"></div>
</div>
<!-- ./wrapper -->

<!-- edu-model提示框模板 -->
<div id="edu-alert" class="modal">
  <div class="modal-dialog modal-sm">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
        <h5 class="modal-title"><i class="fa fa-exclamation-circle"></i> [Title]</h5>
      </div>
      <div class="modal-body small">
        <p>[Message]</p>
      </div>
      <div class="modal-footer" >
        <button type="button" class="btn btn-primary ok" data-dismiss="modal">[BtnOk]</button>
        <button type="button" class="btn btn-default cancel" data-dismiss="modal">[BtnCancel]</button>
      </div>
    </div>
  </div>
</div>
<!-- edu-model-end -->

<!-- REQUIRED JS SCRIPTS -->

<!-- jQuery 3 -->
<script src="{% static 'myadmin/bower_components/jquery/dist/jquery.min.js' %}"></script>
<!-- Bootstrap 3.3.7 -->
<script src="{% static 'myadmin/bower_components/bootstrap/dist/js/bootstrap.min.js' %}"></script>
<!-- AdminLTE App -->
<script src="{% static 'myadmin/dist/js/adminlte.min.js' %}"></script>

<script src="{% static 'myadmin/dist/js/edu-modal-alert-confirm.js' %}"></script>

<!-- 此处可以添加SimLoopl和FastClick插件,用于增强用户体验。 -->

<!-- <script type="text/javascript">

    Modal.confirm({
        msg: "确定要删除吗?",
        title: ' 信息提示',
        btnok: '确定',
        btncl:'取消'
      }).on(function (e){
        if(e){
          Modal.alert({msg: "成功删除",title: ' 信息提示',btnok: '确定',btncl:'取消'});
        }
      });
</script> -->
</body>
</html>

注意要在HTML开头添加 {% load static %}以添加静态文件
{% block main_content %} {% endblock %}把父模板挖空,其他的子模版在继承这个父模板时,在里面填值即可

6、在静态文件夹static中添加以下静态资源

Django项目实战之点餐系统第二章:后台管理子系统功能实现
7.在templates/myadmin文件夹中创建一个myadmin_index.html后台管理首页子模板,内容如下:
{% extends 'myadmin/base.html' %}
{% block main_content %}
<section class="content-header">
    <h1>
      首页
      <small>订餐系统后台管理</small>
    </h1>
    <ol class="breadcrumb">
      <li><a href="#"><i class="fa fa-dashboard"></i> Level</a></li>
      <li class="active">Here</li>
    </ol>
  </section>

  <!-- Main content -->
  <section class="content container-fluid">

    <!-- Small boxes (Stat box) -->
    <div class="row">
      <div class="col-lg-3 col-xs-6">
        <!-- small box -->
        <div class="small-box bg-aqua">
          <div class="inner">
            <h3>150</h3>

            <p>新订单</p>
          </div>
          <div class="icon">
            <i class="ion ion-bag"></i>
          </div>
          <a href="#" class="small-box-footer">更多信息 <i class="fa fa-arrow-circle-right"></i></a>
        </div>
      </div>
      <!-- ./col -->
      <div class="col-lg-3 col-xs-6">
        <!-- small box -->
        <div class="small-box bg-green">
          <div class="inner">
            <h3>53<sup style="font-size: 20px">%</sup></h3>

            <p>Bounce Rate</p>
          </div>
          <div class="icon">
            <i class="ion ion-stats-bars"></i>
          </div>
          <a href="#" class="small-box-footer">更多信息 <i class="fa fa-arrow-circle-right"></i></a>
        </div>
      </div>
      <!-- ./col -->
      <div class="col-lg-3 col-xs-6">
        <!-- small box -->
        <div class="small-box bg-yellow">
          <div class="inner">
            <h3>44</h3>

            <p>用户注册</p>
          </div>
          <div class="icon">
            <i class="ion ion-person-add"></i>
          </div>
          <a href="#" class="small-box-footer">更多信息 <i class="fa fa-arrow-circle-right"></i></a>
        </div>
      </div>
      <!-- ./col -->
      <div class="col-lg-3 col-xs-6">
        <!-- small box -->
        <div class="small-box bg-red">
          <div class="inner">
            <h3>65</h3>

            <p>Unique Visitors</p>
          </div>
          <div class="icon">
            <i class="ion ion-pie-graph"></i>
          </div>
          <a href="#" class="small-box-footer">More info <i class="fa fa-arrow-circle-right"></i></a>
        </div>
      </div>
      <!-- ./col -->
    </div>

  </section>
{% endblock %}

8、这个时候如果直接启动后端服务器跑程序,系统可能会报错,因为前堂点餐和移动端点餐的子路径以及视图文件还没写,所以我们简单来写以下它们的路由文件以及视图文件

Django项目实战之点餐系统第二章:后台管理子系统功能实现
Django项目实战之点餐系统第二章:后台管理子系统功能实现
Django项目实战之点餐系统第二章:后台管理子系统功能实现
Django项目实战之点餐系统第二章:后台管理子系统功能实现
9、这些都写完后,再运行后端启动命令,把后端跑起来应该没问题了
Django项目实战之点餐系统第二章:后台管理子系统功能实现
Django项目实战之点餐系统第二章:后台管理子系统功能实现
服务器默认端口为8000,这个端口可以自己命令行更改,这里我使用默认的8000端口

10、服务器启动后,在浏览器英文输入127.0.0.1:8000/myadmin就会返回一个后台管理首页页面

Django项目实战之点餐系统第二章:后台管理子系统功能实现

Original: https://blog.csdn.net/weixin_45631151/article/details/120568249
Author: 威威猪
Title: Django项目实战之点餐系统第二章:后台管理子系统功能实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/734229/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球