精华内容
下载资源
问答
  • django 开发公司bug管理系统django 开发公司bug管理系统django 开发公司bug管理系统
  • 利用Django框架开发的内容管理系统后台,采用源码安装的方式安装了simpleui界面,使其界面美观。
  • 一个Django开发的婚礼网站,邀请 客人管理系统
  • 本篇文章给大家详细讲述了python3.6+django2.0开发一套学员管理系统的全部过程以及源码分享,有兴趣的朋友参考下。
  • Django框架开发的图书管理系统 带图书管理员和读者的两套系统.同时支持Django自带的数据库管理模块 安装依赖库 pip install django pip install django-simpleui 运行 在项目级目录下运行 python manage.py ...
  • 主要介绍了python3+django2开发一个简单的人员管理系统过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 正在开发的项目,旨在创建一个简单的业务管理系统。 模块 系统应包含的模块: 总务; 合同; 金融的; 人力资源; 报告; 依赖项: Django 框架 1.6; Django 套装 ( ); xhtml2pdf ( ); SQLite
  • 请求、模板、ORM、admin 都自带,程序员可以很轻松的开发一个网站或者管理系统。 今天软币网小编给大家分享一个超简单的员工管理系统 源码地址: https://github.com/newpanjing/simpleui_demo 我们首先创建...

    熟悉python的朋友都知道,django简直是web开发领域的一个大杀器。

    请求、模板、ORM、admin 都自带,程序员可以很轻松的开发出一个网站或者管理系统。

    今天软币网小编给大家分享一个超简单的员工管理系统

    源码地址:

    https://github.com/newpanjing/simpleui_demo

    我们首先创建一个django项目,这里我们推荐用PyCharm

    PyCharm
    PyCharm​​​​​​

     

    这是添加好员工和财务模块后的结构:

    用Django半天时间开发一个员工管理系统 软盟网

     

    打开后台以后,你会发现这后台完全不符合咱们国人的操作习惯,有点反人类。

    还好django的作者在设计的时候就考虑到了这个问题,我们可以用第三方的主题来美化django。

    我们推荐一个最近在github和gitee上最热门的django admin 主题“django-simpleui

    django-simpleui是vue+element-ui编写的一个主题

    主页地址:

    https://github.com/newpanjing/simpleui

    在使用django-simpleui之前需要用pip命令安装

    pip install django-simpleui

    安装完成后在项目的settings.py文件的INSTALL_APP中第一行加入:

    INSTALLED_APPS = [
     'simpleui',
     'import_export',
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     # 'demo.apps.DemoConfig',
     # 注册自己的app
     'demo',
     'finance',
    ]

    然后重新启动刷新界面,登录页和主页都发生非常大的变化

    django-simpleui
    django-simpleui 登录界面

     

    django-simpleui 主页
    django-simpleui 主页

     

    simpleui提供了28款各色流行主题,喜欢的小伙伴可以尝试切换下

    django-simpleui 主题切换
    django-simpleui 主题切换  软件商城

    git地址:https://github.com/newpanjing/simpleui_demo

    来自:软盟

     

     

    展开全文
  • 书库 Django开发一个简单的图书馆管理系统
  • django-minicms Django开发简易的内容管理系统自强学堂实战教程,每天提交一次代码,直至项目完成。 最终会开发成一个内容管理系统,某些新闻发布网站,博客文章管理等
  • 如何django快速开发自适应管理系统图文.pptx
  • 最近使用Django开发一个小程序和后台管理系统 ,需要将这两个不同的项目部署到同一个服务里面,然后使用不同的域名来访问不同的项目。Django默认的只支持单服务访问,要想实现不同域名,需要安装django的第三方扩展...

    最近使用Django开发一个小程序和后台管理系统 ,需要将这两个不同的项目部署到同一个服务里面,然后使用不同的域名来访问不同的项目。Django默认的只支持单服务访问,要想实现不同域名,需要安装django的第三方扩展包:django-hosts。

    本文通过一个简单的demo来给演示, 看本文的前提是需要对django有一定的认识,对项目环境的搭建以及Nginx有一定的了解。

    更多Python视频、源码、资料加群683380553免费获取

    一.搭建环境与项目:

    平时习惯使用Anconda来管理Python包,所以本文也使用anconda管理环境,当然大家要是习惯使用virtuallen管理环境也没有问题。本文主要是演示怎么完整搭建一个单服务实现多域名访问的流程,不涉及具体的业务流程。

    由于生成django项目需要先下载django包,所以我们先创建一个基本的虚拟环境,然后在虚拟环境中通过具体命令来生成项目文件。

    1、环境搭建:applite_web

    conda create --name applite_web
    

    创建完虚拟环境applite_web了,现在需要下载一些依赖包。这里只需要单独安装django与django-hosts即可。

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    2、创建项目:applite_web

    django-admin.py startproject applite_web
    

    3、创建app

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    说明2点:

    • 根据项目的需要,将原来Django项目结构做了调整
    • 至于创建4个app的用法后边会具体涉及到

    下面截图是创建本文Demo项目结构,当然这也是比较简单的一个项目结构,实际项目开发中,还需要配置别的参数与文件。

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    二. 在applite_web中配置django-hosts

    创建好虚拟环境和项目之后,接下来重点就是在django中配置多域名。为了方便起见,本文只演示2个域名,多个域名按照2个域名的方式增加就行。

    1、首先在settins.py同级增加一个hosts.py文件,配置如下:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    2、然后在django的settings配置文件增加3处配置:

    在INSTALLED_APPS中增加下面几个

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    需要在 MIDDLEWARE 的首行和末行增加2行配置

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    在ROOT_URLCONF下行增加如下2行参数配置

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    三. 配置url和view

    上边两步操作完成,接下来就需要去app文件夹下,编写对应的url和view。本文是演示2个域名,同时考虑到一般单个项目会有多个模块,所以还需要分别配置两个url。具体的配置如下:

    1、分别在app_1、app_2文件夹下创建urls.py文件,并且增加对应的url,代码如下:

    app_1的urls.py文件如下:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    app_2的urls.py文件如下

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    2、然后在app_1_demo、app_2_demo中分别增加对应的url和views函数

     

    在app_1中匹配成功之后,会直接跳转到app_1_demo的urls,再根据当前的匹配跳转当前的views函数

    1)、首先匹配app_1_demo的urls的路由:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    2)、urls匹配成功之后,跳转这里的视图函数,并返回响应

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    同理,app_2匹配成功之后,会直接跳转到app_2_demo的urls,再根据当前的匹配跳转当前的views函数

    1)、首先匹配app_2_demo的urls的路由,匹配如下:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    2)、urls匹配成功之后,跳转这里的视图函数,并返回响应

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    四.域名绑定与测试

    经过上边三步的操作,已经完成了一个基本的演示功能。本文目的是通过Nginx负载单服务后,在一个服务里面来实现不同域名的访问,所以在配置uwgi和Nginx参数,还需要绑定域名。

    1、这里是在同一个局域网下通过两台机器实现用户的访问:

    访问机器IP: 192.168.2.17, 部署服务的IP: 192.168.2.200。在实际生产需要购买真实的域名,这里作为演示,可以通过在本机绑定服务器的ip的方式来实现对另一台机器服务的访问,具体修改如下:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    2、绑定完之后,然后将本项目放到192.168.2.200机器上,测试当前的服务配置没有问题。

    项目放置路径为: /home/yxy/payneli/applite_web/

     

    进入app文件夹下,然后运行项目,命令如下:

    python manage.py runserver 192.168.2.200:8000
    

    浏览器输入:app1.cc:8000/app1/,如果浏览器显示如下结果,说明项目配置与域名绑定成功

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    五.uwsgi参数配置与测试

    前边几步成功之后,接下来就是配置uwsgi的参数。熟悉Python后台开发的都应该清楚,开发的时候使用的 python manage.py runserver 来运行服务器,这只适用开发时的代码调试,而实际项目部署的话,django内置的服务根本无法满足需求。而Uwsgi作为Python服务器不仅可以提供稳定的服务,同时还可以提供大的并发量,所以在后台开发中,用的比较多。

    1、在项目文件夹下,创建一个uwsgi文件夹。进入该文件夹,创建uwsgi.ini文件,里面的配置参数如下:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    2、配置完成后,运行下面的命令,启动服务。

    # 在项目路径下,启动服务命令如下:
    uwsgi --ini ./uwsgi/uwsgi.ini
    

    启动完成后,uwsgi文件夹里面就会多出两个文件:uwsgi.pid uwsgi.sock

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    然后查看当前服务是否启动成功:

    # 命令如下
    ps -ef|grep uwsgi
    

    当显示如下图所示的时候,说明uwsgi已经将项目启动成功

     

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    3、浏览器测试服务是否正常:

    在浏览为直接输入:app1.cc:8000/app1/,如果显示如下,说明uwsgi配置成功

     

    用Django开发一个小程序和后台管理系统实现多域名访问

     

     

    六. Nginx配置与测试

     

    如果前边5步没有问题的话,那么恭喜你,就差最后一步就可以完成本demo的演示了。现在就开始最后一步,配置Nginx参数。

    1、首先安装Nginx,本文对nginx安装不做讲解,毕竟网上教程那么多,可以找一个好的教程照着操作就可以。小编将Nginx安装为默认路径,在:/usr/local/nginx,进入此文件下,直接命令行启动。

    /usr/local/nginx/sbin/nginx
    

    查看Nginx是否启动成功,命令如下:

    ps -ef|grep nginx
    

    显示如下图,说明Nginx启动成功

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    浏览器输入:app1.cc,显示如下所示,说明Nginx安装成功

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    2、检查Nginx配置没有问题之后,就是配置多域名了。

    注释掉Nginx原有的配置server

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    增加如下一行参数,主要是为了方便单独增加配置app1.cc、与app2.cc两个域名的文件

     

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    分别在 /usr/nginx/conf/文件加下,创建一个新的multihosts文件夹,进入该文件夹分别新建 app1.cc.conf、app2.cc.conf文件,具体的配置参数如下:

    app1.cc.conf配置如下:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    app2.cc.conf配置如下:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    3、多域名的参数配置完成,但是此刻不要忘了,当使用Nginx作为负载均衡时候,需要将uwsgi.ini里面的参数http改为socket具体如下:

    用Django开发一个小程序和后台管理系统实现多域名访问

     

    4、到这里本文的参数已经配置完成,然后我们需要重新自动Nginx,查看显示如上边启动效果,说明启动成功,接下来就是浏览器检测多域名配置是否正确:

    分别输入:app1.cc、app2.cc显示结果如下,说明多域名已经配置成功

     

    用Django开发一个小程序和后台管理系统实现多域名访问

     

     

    用Django开发一个小程序和后台管理系统实现多域名访问

     

     

    到此为止,单服务实现多域名访问已经演示完成。当然,本文只是做了一个简单的demo版本,而实际项目开发的过程中,还需要根据实际需要评估,决定到底是nginx后台负载多服务,还是nginx负载单服务映射多域名。

    展开全文
  • django开发个人博客系统

    万次阅读 多人点赞 2019-02-18 22:08:37
    写在开头:这是我第次使用Django进行web开发,在此之前并无任何web开发经验。其中,Django以及html/css都属于边学边用阶段,因此项目中可能出现一些粗糙的地方,读者可以自行规避。虽然本项目名为信息资源型系统,...

    目录

    前言
    项目预览
    项目版本
    项目构思
    项目实战
         登录子系统
         后台美化
    完整项目获取
    尾言

    前言

        当初是在2018年写下的这篇文章,那时的django更新到了版本2.0,使用人数还是比较少的,网上的教程大多也很少。而现在随着python web框架的流行,越来越多人开始接触到了django这门技术。如今,django已经更新到了版本3.0,添加了支持异步等重要特性,但是这些特性和本篇文章基本无关。写下这篇文章的初衷是为了让刚接触django框架的童鞋可以入门上手一个项目,了解如何快速搭建一个项目,毕竟python web的优势便是快速易上手嘛【最近接触了springboot后的感触】。如今再次更新这篇博文(2020-2月),希望能够给予大家入门一定的帮助。
        
        
    p.s:其实建立一个web项目需要处理的事情比较杂,我就按照我的建立习惯给大家写下这篇教程。
    另外,本项目是我在重新写时完整重新搭建,所以一定可以跑通,我会写的比较仔细一点,如果你能耐心看完,必定有所收获。
    【-------------------------原创不易,请勿侵权------------------------------------------------------------------】

    项目预览

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
        
        

    项目版本

    运行平台:windows
    Python版本:3.7
    Django版本:3.0
    数据库工具:sqlite
    开发工具:Pycharm+vscode
    依赖:pillow,django-simpleui,django_summernote
        
        

    项目构思

        个人博客系统属于一个非常小型的项目,不会存在高并发的情况,同时注册用户主要也就是为了评论博客内容,其实用户账号安全性也可以完全不用考虑。项目采取前后端分离的形式进行开发,前后端信息交互多数采取ajax形式(按理说动态更新页面比较友好交互,但是为了让大家感受一下这两种方式,在登录这一块采取静态跳转)。剩下的部分一次性在这里写下来大家也不一定能看的很明白,在建立项目的过程中再给大家介绍。
        
        

    项目实战

    请先下载静态文件 下载连接:https://pan.baidu.com/s/1Er2S63MThOfzhlbuUkTEkw 之后替换相应的文件

    我们首先给我们的项目起个名字:Ericam
        
    (1)利用命令行创建项目。
        

    django-admin startproject Ericam
    

        
    (2)创建APP
        
    解释一下:项目中会存在登录子系统,博文管理子系统等,这些子系统每个都可以作为一个app,如此分离方便日后开发维护。但是作为一个入门项目,便不如此麻烦了。我们在整个项目只建立一个app。
    由于我们准备搭建的是一个博客系统,所以就给这个APP起名为:blog
        
    在命令行下继续输入

    python manage.py startapp blog
    

        
    此时文件目录结构:
    在这里插入图片描述
        
    介绍一下各个文件的用处
    在这里插入图片描述
        
    删除test.py,新建一个urls.py文件
    在这里插入图片描述
    为什么需要两个urls.py文件呢?方便分层管理,类似于一级目录,二级目录。
        
        
    (3)注册app并配置静态文件目录
    在这里插入图片描述
        
    在settings.py文件里添加如下内容
        

    # 配置静态文件目录
    STATICFILES_DIRS = [
            os.path.join(BASE_DIR, 'static'),
        ]
    

        
    【静态文件:css,js和图片文件等,我们在这里配置了文件目录路径】
    此时运行项目,用浏览器访问 http://127.0.0.1:8000/
    在这里插入图片描述
    出现一个小火箭代表我们的项目搭建成功了。
        
        
    (4)
    新建文件夹,如下所示(建议直接将static文件夹复制过来,本博客不会讲解css以及js):
    在这里插入图片描述
    (所有html文件存放于templates文件夹下)
    新建index_unlog.html文件【作为首页,未登录时显示的页面】
    我们先简单测试一下,给大家展示一下django如何通过view.py视图层显示html页面。
    在index_unlog.html里:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>首页</title>
    </head>
    <body>
        个人博客系统测试
    </body>
    </html>
    

    在views.py文件里:

    def index_unlog(request):
        return render(request,'index_unlog.html')
    

    最后我们添加一下路由地址,在与settings.py同级目录的urls.py:

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/',include('blog.urls')),
        path('',views.index_unlog,name='index_unlog')
    ]
    

    在新建的urls.py文件【以后我加个标号2代表该文件】里添加如下内容:

    app_name = 'blog'
    urlpatterns = [
    ]
    

    ps:在pycharm里按alt+enter可以添加未引入的类包。
    此时刷新项目,用浏览器访问 http://127.0.0.1:8000/

    在这里插入图片描述

    搞懂了每个文件的大致作用,我们便可以开始正式开发博客系统啦。
    我们按照模块化进行开发。
        
        
        

    登录子系统开发

    (1)首页(未登录)-编写index_unlog.html
        

    {% load static %}
    <html lang="zh">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="author" content="Ericam_">
    
        <!-- CSS -->
    	<title>Ericam_blog</title>
    	<link rel="shortcut icon" href="{% static 'images/gt_favicon.png' %}">
    	<link rel="stylesheet" media="screen" href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,700">
    	<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
    	<link rel="stylesheet" href="{% static 'css/font-awesome.min.css' %}">
    	<!-- Custom styles for our template -->
    	<link rel="stylesheet" href="{% static 'css/bootstrap-theme.css'%}"  >
    	<link rel="stylesheet" href="{% static 'css/log.css'%}">
    	<link rel="stylesheet" href="{% static 'css/blog.css'%}">
    	</head>
    
    
    <body class="back">
      <!--导航栏-->
    	<div class="navbar navbar-inverse navbar-fixed-top headroom" >
    		<div class="container">
    			<div class="navbar-header">
    				<!-- Button for smallest screens -->
    				<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"><span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
    				<a class="navbar-brand"><img src="{%static 'css/images/lo.png'%}" alt="Progressus HTML5 template"></a>
    			</div>
    			<div class="nav navbar-nav navbar-right">
    								<!--在这里填写登录提交  1-->
    			</div>
    		</div>
    	</div>
    
    	  <center>
        <div class="container" style="padding-top:300px;min-height:800px">
          <div class="row">,.
            <p class="lead"><font color="white"">个人博客系统,尽情的享用吧(〃'▽'〃)</font></p>
            <p class="tagline"><font color="white">如果您有优秀的建议,欢迎投递哦</font></p>
    							<!--在这里填写登录提交  2-->
          </div>
        </div>
    	</center>
    
    
       <footer id="footer" class="top-space">
    		<div class="footer2">
    			<div class="container">
    				<p class="text-center">Copyright &copy; 2020, Ericam_blog</p>
    			</div>
    		</div>
      </footer>
    </body>
    </html>
    

    第一句话{%load static%}代表引入静态文件(css,js等)
    img,css,js等文件的引用与下述语句类似:

     <link rel="stylesheet" href="{%static 'css/log.css' %}">
    

    此时打开浏览器查看效果:
    在这里插入图片描述
        
        
    (2)登录页-login.html
        

    {%load static%}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
        <link rel="shortcut icon" href="{% static 'images/gt_favicon.png' %}">
        <link rel="stylesheet" href="{%static 'css/log.css' %}">
        <link rel="stylesheet" href="{%static 'css/semantic.css' %}">
        <link rel="stylesheet" href="{% static 'css/font-awesome.min.css' %}">
    </head>
    <body class="login">
        <div class="ui center aligned grid" style="margin-top: 200px">
            <div class="ui six wide column">
                <h1 class="ui teal header">Ericam blog-登录</h1>
                <div class="ui segment">
                    <div class="ui content">
        <form class="ui large form" method="post" action="{%url 'login'%}">
          <div class="ui stacked segment">
            <div class="field">
              <div class="ui left icon input">
                <input type="text" name="username" placeholder="请输入用户名">
              </div>
            </div>
            <div class="field">
              <div class="ui left icon input">
                <input type="password" name="password" placeholder="请输入密码">
              </div>
            </div>
            {{ error }}<br>
            <a class="pull-right field" >忘记密码</a>
            <button class="ui fluid large teal button" type="submit">登陆</button>
          </div>
    
          <div class="ui error message"></div>
        </form>
    
        <div class="ui message">
          New to us? <a>注册</a>
        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>
    

        
    添加路由信息:
        

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/',include('blog.urls')),
        path('',views.index_unlog,name='index_unlog'),
        path('login',views.login,name='login')
    ]
    

        
    添加视图层views.py内容:
        

    def login(request):
        return render(request,'login.html')
    

        
    此时预览:
        
    在这里插入图片描述
        
    在index_unlog.html里添加内容:

    	<!--在这里填写登录提交  1-->
    <a class="btn" href="{% url 'login' %}">登录 / 注册</a></li>
    
        <!--在这里填写登录提交  2-->
    <p><a class="btn btn-action btn-lg" role="button" href="{% url 'login' %}">START NOW</a></p>
    

        
    为了实现登录功能,我们首先需要构造一个用户表
        
    打开models.py文件

    from django.db import models
    from django.contrib import  admin
    from django.urls import reverse
    from django.utils.timezone import now
    
    # Create your models here.
    
    class User(models.Model):
        username = models.CharField(max_length = 50)
        password = models.CharField(max_length = 200)
        nickname = models.CharField(max_length = 50,default='匿名')
        email = models.EmailField()
        created_time = models.CharField(max_length=50,default=now)
        comment_num = models.PositiveIntegerField(verbose_name='评论数', default=0)
        avatar = models.ImageField(upload_to = 'media', default="media/default.png")
    
        def __str__(self):
            return self.username
    
        def comment(self):
            self.comment_num += 1
            self.save(update_fields=['comment_num'])
    
        def comment_del(self):
            self.comment_num -= 1
            self.save(update_fields=['comment_num'])
    
    class UserAdmin(admin.ModelAdmin):
        list_display = ('username','email')
    #修饰器
    

    然后打开命令行

    python manage.py makemigrations
    python manage.py migrate
    

    这便生成了sqlite数据库文件
    在这里插入图片描述
    通过sqliteStudio打开浏览:
    在这里插入图片描述
        
    在views.py文件里编写登录逻辑

    def login(request):
        if request.method == 'POST':
            user_name = request.POST.get('username','')
            pass_word = request.POST.get('password','')
            user = User.objects.filter(username=user_name)  #查看数据库里是否有该用户名
            if user:#如果存在
                user = User.objects.get(username = user_name)#读取该用户信息
                if pass_word==user.password:#检查密码是否匹配
                    request.session['IS_LOGIN'] = True
                    request.session['nickname'] = user.nickname
                    request.session['username'] = user_name
                    return render(request,'index.html',{'user':user})
                else:
                    return render(request,'login.html',{'error': '密码错误!'})
            else:
                return render(request, 'login.html', {'error': '用户名不存在!'})
        else:
            return render(request,'login.html')
    

    因为我们需要记录cookies,所以我们打开settings.py文件,注释该语句
    在这里插入图片描述
    此时登录功能已经实现了。登录成功我们希望页面进行跳转,所以我们需要新建一个index.html

    {% load static %}
    <html lang="zh">
      <head>
        <meta charset="utf-8">
        <title>首页-Ericamblog</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="author" content="Ericam_">
    
        <!-- CSS -->
    	<link rel="shortcut icon" href="{% static 'images/gt_favicon.png' %}">
    	<link rel="stylesheet" media="screen" href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,700">
    	<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
    	<link rel="stylesheet" href="{% static 'css/font-awesome.min.css' %}">
    	<!-- Custom styles for our template -->
    	<link rel="stylesheet" href="{% static 'css/bootstrap-theme.css'%}" media="screen" >
    	<link rel="stylesheet" href="{% static 'css/blog.css' %}">
    	<link rel="stylesheet" href="{% static 'css/log.css' %}">
    </head>
    
    <body class="back">
      <script src = "E:/bootstrap/bootstrap-3.3.7-dist/bootstrap-3.3.7-dist/js/jquery.min.js"></script>
      <!--导航栏-->
    	<div class="navbar navbar-inverse navbar-fixed-top headroom" >
    		<div class="container">
    			<div class="container-fluid">
    			  <div class="navbar-header">
    				<!-- Button for smallest screens -->
    				  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"><span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
    				  <a class="navbar-brand"><img src="{%static 'css/images/lo.png'%}" alt="Progressus HTML5 template"></a>
    			  </div>
    
            <ul class="nav navbar-nav navbar-right">
                <li><a><font size="4" color="white">{{user.nickname}}</font></a></li>
                <li><a href="{%url 'index_unlog'%}"><i class="fa fa-sighout"></i><font size="4">注销</font></a></li>
            </ul>
        </div>
    	</div>
    </div>
    
    	  <center>
        <div class="container" style="padding-top:300px;min-height:800px">
          <div class="row">,.
            <p class="lead"><font color="white"">Easy-Download,这里有好多好多资源喔,尽情的享用吧(〃'▽'〃)</font></p>
            <p class="tagline"><font color="white">如果您有优秀的资源,欢迎投递哦</font></p>
            <p><a class="btn btn-action btn-lg" role="button" href="#">START NOW</a></p>
          </div>
        </div>
    	</center>
    
       <footer id="footer" class="top-space">
    		<div class="footer2">
    			<div class="container">
    				<p class="text-center">Copyright &copy; 2020, Ericamblog</p>
    			</div>
    		</div>
      </footer>
    </body>
    </html>
    

    views.py

    def logsuccess(request):
        return render(request,'index.html')
    

    添加路由信息

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/',include('blog.urls')),
        path('',views.index_unlog,name='index_unlog'),
        path('login',views.login,name='login'),
        path('/log',views.logsuccess,name='login-success')
    ]
    

    手动在数据库中添加一个用户信息
    在这里插入图片描述
    我们进行预览
    在这里插入图片描述
        
        
    完成了登录验证功能后,我们就需要添加注册功能,因为刚才用户的信息是我们手动在数据库内添加的,正常情况下应该是前端页面将内容发送给后端,后端经过处理存储在数据库内。
        
        
    注册模块
        
        
    (1)views.py

    def register(request):
        if request.method =='POST':
            user_name = request.POST.get('username','')
            pass_word_1 = request.POST.get('password_1','')
            pass_word_2 = request.POST.get('password_2','')
            nick_name = request.POST.get('nickname','')
            email = request.POST.get('email','')
            avatar = request.FILES.get('avatar')
            if User.objects.filter(username = user_name):
                return render(request,'register.html',{'error':'用户已存在'})
                #将表单写入数据库
            if(pass_word_1 != pass_word_2):
                return render(request, 'register.html', {'error': '两次密码请输入一致'})
            user = User()
            if avatar:
                user.avatar = 'media/' + user_name + '.png'
                img = Image.open(avatar)
                size = img.size
                print(size)
                # 因为是要圆形,所以需要正方形的图片
                r2 = min(size[0], size[1])
                if size[0] != size[1]:
                    img = img.resize((r2, r2), Image.ANTIALIAS)
                # 最后生成圆的半径
                r3 = int(r2/2)
                img_circle = Image.new('RGBA', (r3 * 2, r3 * 2), (255, 255, 255, 0))
                pima = img.load()  # 像素的访问对象
                pimb = img_circle.load()
                r = float(r2 / 2)  # 圆心横坐标
                for i in range(r2):
                    for j in range(r2):
                        lx = abs(i - r)  # 到圆心距离的横坐标
                        ly = abs(j - r)  # 到圆心距离的纵坐标
                        l = (pow(lx, 2) + pow(ly, 2)) ** 0.5  # 三角函数 半径
    
                        if l < r3:
                            pimb[i - (r - r3), j - (r - r3)] = pima[i, j]
                img_circle.save('blog/static/media/'+user_name+'.png')
            user.username = user_name
            user.password = pass_word_1
            user.email = email
            user.nickname = nick_name
            user.save()
                #返回注册成功页面
            return render(request,'index_unlog.html')
        else:
            return render(request,'register.html')
    

        
        
    代码含义很好理解,就是将前端提交的信息以user对象存储到数据库中,中间一部分代码是将用户提交的头像切割成圆形(无需理解)
        
        
    (2)添加路由信息

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/',include('blog.urls')),
        path('',views.index_unlog,name='index_unlog'),
        path('login',views.login,name='login'),
        path('log',views.logsuccess,name='login-success'),
        path('register',views.register,name='register')
    ]
    

    (3)添加register.html

    {%load static%}
    <!DOCTYPE html>
    <html lang="zh-hans">
    <head>
        <meta charset="UTF-8">
        <title>注册</title>
        <link rel="shortcut icon" href="{% static 'images/gt_favicon.png' %}">
        <link rel="stylesheet" href="{%static 'css/log.css' %}">
        <link rel="stylesheet" href="{%static 'css/semantic.css' %}">
    </head>
    <body class="register">
        <div class="ui center aligned grid" style="margin-top: 200px">
            <div class="ui six wide column">
                <h1 class="ui teal header"><font color="black">EricamBlog-用户注册</font></h1>
                <div class="ui segment">
                    <div class="ui content">
                        <form class="ui form" method="post" action="{%url 'register'%}"  enctype="multipart/form-data">
                            <div class="field">
                                <input type="text" name="username" placeholder="请输入用户名"><br>
                            </div>
                            <div class="field">
                                <input type="password" name="password_1" placeholder="请输入密码"><br>
                            </div>
                            <div class="field">
                                <input type="password" name="password_2" placeholder="请确认密码"><br>
                            </div>
                            <div class="field">
                                <input type="text" name="nickname" placeholder="请输入昵称"><br>
                            </div>
                            <div class="field">
                                <input type="text" name="email" placeholder="请输入邮箱"><br>
                            </div>
                            <div>头像<input type="file" name="avatar"></div>
                            {{ error }}<br>
                            <button class="ui fluid large teal button" type="submit">注册</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>
    

        
        
    现在注册模块已经完成了,但是刚才我们在编写登录页面时没有添加对于注册页面的超链接跳转,现在需要进行添加。
    在login.html里修改如下内容:
    在这里插入图片描述
    此时注册功能已经完成,大家可以自行测试。
        
        
    接下来我们再来添加忘记密码模块。
    正常情况下,忘记密码时应该发送邮件给邮箱,邮箱确认后再填写新密码。这里为了简易操作,便忽略。
    (1)添加views.py内容

    def forget_password(request):
        if request.method == 'POST':
            user_name = request.POST.get('username','')
            email = request.POST.get('email','')
            user = User.objects.filter(username = user_name)
            if user:
                user = User.objects.get(username = user_name)
                if(user.email == email):
                    request.session['user_name'] = user_name
                    return render(request,'reset.html')
                else:
                    return render(request,'forget.html',{'error':'您的用户名和邮箱不匹配!'})
            else:
                return render(request,'forget.html',{'error':'请输入正确的用户名'})
        else:
            return  render(request,'forget.html')
    
    def reset(request):
        if request.method == 'POST':
            pass_word1 = request.POST.get('password1','')
            pass_word2 = request.POST.get('password2','')
            user_name = request.session['user_name']
            user = User.objects.get(username = user_name)
            if pass_word1 == pass_word2:
                user.password = pass_word1
                user.save()
                return render(request,'login.html')
            else:
                return render(request,'reset.html', {'error': '两次密码输入不一致!'})
        else:
            return render(request,'reset.html')
    

    (2)添加forget.html和reset.html
    forget.html

    {%load static%}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>忘记密码</title>
        <link rel="stylesheet" href="{%static 'css/log.css' %}">
        <link rel="stylesheet" href="{%static 'css/semantic.css' %}">
    </head>
    <body class="forget">
        <div class="ui center aligned grid" style="margin-top: 200px">
            <div class="ui six wide column">
                <h1 class="ui teal header">Ericam blog-忘记密码</h1>
                <div class="ui segment">
                    <div class="ui content">
                        <form class="ui form" method="post" action="{%url 'forget'%}">
                            <div class="field">
                                <input type="text" name="username" placeholder="请输入用户名"><br>
                            </div>
                            <div class="field">
                                <input type="text" name="email" placeholder="请输入邮箱"><br>
                            </div>
                            {{ error }}<br>
                            <button class="ui fluid large teal button" type="submit">下一步</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>
    

        
        
    reset.html

    {%load static%}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>重置密码</title>
        <link rel="shortcut icon" href="{% static 'images/gt_favicon.png' %}">
        <link rel="stylesheet" href="{%static 'css/semantic.css' %}">
        <link rel="stylesheet" href="{%static 'css/log.css' %}">
    </head>
    <body class="reset">
        <div class="ui center aligned grid" style="margin-top: 200px">
            <div class="ui six wide column">
                <h1 class="ui teal header">Ericam blog-重置密码</h1>
                <div class="ui segment">
                    <div class="ui content">
                        <form class="ui form" method="post" action="{%url 'reset'%}">
                            <div class="field">
                                <input type="password" name="password1" placeholder="请输入新密码"><br>
                            </div>
                            <div class="field">
                                <input type="password" name="password2" placeholder="请确认新密码"><br>
                            </div>
                            {{ error }}<br>
                            <button class="ui fluid large teal button" type="submit">确认修改</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>
    

        
        
    (3)添加路由

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/',include('blog.urls')),
        path('',views.index_unlog,name='index_unlog'),
        path('login',views.login,name='login'),
        path('log',views.logsuccess,name='login-success'),
        path('register',views.register,name='register'),
        path('forget',views.forget_password,name='forget'),
        path('reset',views.reset,name='reset')
    ]
    

        
        
    到了这里忘记密码功能已经完成,最后我们还需要添加一下超链接跳转
    打开login.html文件,修改:
    在这里插入图片描述
        
        
    【至此,登录子系统已经全部完成】

    后台美化

    django默认自带后台管理系统
    创建一个超级管理员账户:

    python manage.py createsuperuser
    

    访问:http://127.0.0.1:8000/admin/
    在这里插入图片描述
    接下来我们对后台进行美化

    pip install django-simpleui
    pip install django_summernote
    

    然后在settings.py添加:

    INSTALLED_APPS = [
        "simpleui",   #添加内容,一定要加在admin前
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',
        'django_summernote'#后台富文本
    ]
    
    SUMMERNOTE_CONFIG = {
        # Using SummernoteWidget - iframe mode
        'iframe': True,  # or set False to use SummernoteInplaceWidget - no iframe mode
    
        # Using Summernote Air-mode
        'airMode': False,
    
        # Use native HTML tags (`<b>`, `<i>`, ...) instead of style attributes
        'styleWithSpan': False,
    
        # Change editor size
        'width': '80%',
        'height': '480',
    
        # Use proper language setting automatically (default)
        'lang': 'zh-CN',
    }
    

    刷新,重新进入admin页面:
    在这里插入图片描述
    给后台添加注册,方便管理数据内容:
    修改admin.py文件

    from django.contrib import admin
    from blog.models import Article,User,Category,Tag,ArticleComment,Message
    from django_summernote.admin import SummernoteModelAdmin
    
    # Register your models here.
    class PostAdmin(SummernoteModelAdmin):
        summernote_fields = ('content')  # 给content字段添加富文本
        list_display = ['article_id', 'title', 'created_time']
        search_fields = ['title']  # 搜索框
        list_filter = ['created_time']  # 过滤器
    
    #ass ArticleAdmin(admin.ModelAdmin):
    class CommentAdmin(admin.ModelAdmin):
        list_display = ['username', 'body', 'title']
        search_fields = ['title']  # 搜索框
    
    
    admin.site.register(Article, PostAdmin)
    admin.site.register(Category)
    admin.site.register(Tag)
    admin.site.register(User)
    admin.site.register(ArticleComment,CommentAdmin)
    

    修改models.py文件(完整版):

    from django.db import models
    from django.contrib import  admin
    from django.urls import reverse
    from django.utils.timezone import now
    
    
    #---------------------------------用户---------------------------------------
    class User(models.Model):
        username = models.CharField(max_length = 50)
        password = models.CharField(max_length = 200)
        nickname = models.CharField(max_length = 50,default='匿名')
        email = models.EmailField()
        created_time = models.CharField(max_length=50,default=now)
        comment_num = models.PositiveIntegerField(verbose_name='评论数', default=0)   #评论数
        avatar = models.ImageField(upload_to = 'media', default="media/default.png")  #用户头像
    
        def __str__(self):
            return self.username
    
        def comment(self):
            self.comment_num += 1
            self.save(update_fields=['comment_num'])
    
        def comment_del(self):
            self.comment_num -= 1
            self.save(update_fields=['comment_num'])
    
    #---------------------------------文章评论---------------------------------------
    class ArticleComment(models.Model):
        body = models.TextField()
        username = models.CharField(max_length=50)
        userimg = models.CharField(max_length=70)
        nickname = models.CharField(max_length=50,default="匿名")
        createtime = models.DateTimeField(verbose_name='创建时间', default=now)
        article = models.CharField(max_length=50)
        title = models.CharField(max_length=50)
        # 使对象在后台显示更友好
        def __str__(self):
            return self.article
    
        class Meta:
            ordering = ['-createtime']
            verbose_name = '评论'  # 指定后台显示模型名称
            verbose_name_plural = '评论列表'  # 指定后台显示模型复数名称
            db_table = "comment"  # 数据库表名
    
        list_display = ('article', 'body')
    
    #---------------------------------博客文章标签---------------------------------------
    class Tag(models.Model):
        name = models.CharField(verbose_name='标签名', max_length=64)
    
        # 使对象在后台显示更友好
        def __str__(self):
            return self.name
    
        class Meta:
            ordering = ['name']
            verbose_name = '标签名称'  # 指定后台显示模型名称
            verbose_name_plural = '标签列表'  # 指定后台显示模型复数名称
            db_table = "tag"  # 数据库表名
    
    #---------------------------------博客文章分类---------------------------------------
    class Category(models.Model):
        name = models.CharField(verbose_name='类别名称', max_length=64)
    
        class Meta:
            ordering = ['name']
            verbose_name = "类别名称"
            verbose_name_plural = '分类列表'
            db_table = "category"  # 数据库表名
    
        # 使对象在后台显示更友好
        def __str__(self):
            return self.name
    
    #---------------------------------博客文章---------------------------------------
    class Article(models.Model):
        STATUS_CHOICES = (
            ('d', '草稿'),
            ('p', '发表'),
        )
        article_id = models.CharField(verbose_name='标号', max_length=100)
        title = models.CharField(verbose_name='标题', max_length=100)
        content = models.TextField(verbose_name='正文', blank=True, null=True)
        status = models.CharField(verbose_name='状态', max_length=1, choices=STATUS_CHOICES, default='p')
        views = models.PositiveIntegerField(verbose_name='浏览量', default=0)
        created_time = models.DateTimeField(verbose_name='创建时间', default=now)
        category = models.ForeignKey(Category, verbose_name='分类', on_delete=models.CASCADE, blank=False, null=False)
        tags = models.ManyToManyField(Tag, verbose_name='标签集合', blank=True)
    
        # 使对象在后台显示更友好
        def __str__(self):
            return self.title
    
        # 更新浏览量
        def viewed(self):
            self.views += 1
            self.save(update_fields=['views'])
    
        # 下一篇
        def next_article(self):  # id比当前id大,状态为已发布,发布时间不为空
            return Article.objects.filter(id__gt=self.id, status='p', pub_time__isnull=False).first()
    
        # 前一篇
        def prev_article(self):  # id比当前id小,状态为已发布,发布时间不为空
            return Article.objects.filter(id__lt=self.id, status='p', pub_time__isnull=False).first()
    
        class Meta:
            ordering = ['-created_time']  # 按文章创建日期降序
            verbose_name = '文章'  # 指定后台显示模型名称
            verbose_name_plural = '文章列表'  # 指定后台显示模型复数名称
            db_table = 'article'  # 数据库表名
            get_latest_by = 'created_time'
    
    

    记得使用python manage.py migrate进行生成数据库文件。
    此时访问后台:
    在这里插入图片描述
    写文章时富文本工具也加载了出来:
    在这里插入图片描述

    完整项目获取

    重构了代码,同时更新了博客内容,关键难点已经写下来了。
    如果有问题欢迎在评论区提问。
    如果想要获取完整项目,请扫码赞助该项目。
    获取方式:扫码赞助9.9,留言邮箱地址。
    在这里插入图片描述

    尾言

    其他子模块和该模块大同小异,暂时就不写了。
    其中评论提交和删除采取的是ajax交互形式。
    如果大家看了觉得有帮助请点赞,为了大家重新写了这篇文章,同时重构了代码,确保一定能跑通。

     

    展开全文
  • Django 开发后台管理系统

    千次阅读 热门讨论 2019-11-01 16:32:15
    开发系统:windows ,pycharm 主要实现功能: 1)登录与注册页面 2)添加页面 3)更新页面 4)查询页面 5)删除页面 6)账号页面 1)登录与注册页面 对表单数据进行验证( 从数据库验证)账号密码都存在...

    数据库:python自带数据库

    开发系统:windows ,pycharm

    主要实现功能:

    1)登录与注册页面

    2)添加页面

    3)更新页面

    4)查询页面

    5)删除页面

    6)账号页面

     

    1)登录与注册页面

     对表单数据进行验证( 从数据库验证)账号密码都存在就登录进入后台;否则就提示账号密码错误

    点击注册按钮进入注册页面:账号密码是必填项,没有按要求填写就提示输入,按layout推出注册

    2)添加页面

     

    3)更新页面

    4)查询页面

    5)删除页面

    6)账号页面

    第二部分:

    所有的文件中的目录:

    由于代码较多:所以就上部分代码:

    数据库字段:

    from django.db import models
    
    # Create your models here.
    class Info(models.Model):
        num = models.IntegerField(primary_key=True)
        name = models.CharField(max_length=50)
        classroom = models.CharField(max_length=60)
        school = models.CharField(max_length=60)
        number = models.IntegerField()
    
    class Register(models.Model):
        name = models.CharField(max_length=20)
        pwd = models.CharField(max_length=20)
        tel = models.CharField(max_length=20)
        campus = models.CharField(max_length=20)
    
    
    

    根目录下的urls:

    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('xuesheng/', include('app1.urls')),
    

    app下的urls

    from django.contrib import admin
    from django.urls import path
    from . import views
    urlpatterns = [
        path('index.html', views.index, name='search'),
        path('insert.html', views.add_index, name='insert'),
        path('update.html', views.update_search_index, name='update'),
        path('update_search.html', views.update_index, name='update_search'),
        path('del.html', views.del_index, name='del'),
        path('del_search.html', views.del_search_index, name='del_search'),
        path('login.html', views.login, name='login'),#登录页面url
        path('register.html', views.login_register, name='register'), #注册页面
        path('register_get', views.register_get, name='register_get'),#注册信息提交
        path('acount.html', views.acount, name='acount')
    ]

    app下的MTV中重要的views:

    from django.shortcuts import render, redirect
    from app1.models import Info, Register
    
    
    #查询
    def index(request):
        infos = Info.objects.all()
        return render(request, 'index.html',locals())
    
    #添加数据
    def add_index(request):
        # 获取表单参数
        result = {}
        if request.POST:
            num = int(request.POST['xuehao'])
            name = request.POST['name']
            classroom = request.POST['xueyuan']
            school = request.POST['banji']
            number = request.POST['average']
            Info.objects.create(num=num, name=name, classroom=classroom, school=school, number=number)
            result['ids'] = name
        return render(request, 'add.html', result)
    
    #更新数据时根据姓名查找
    def update_search_index(request):
        infos = {}
        if request.method == 'POST':
            info = request.POST['name']
            list = Info.objects.filter(name=info)
            for li in list:
                info_s = []
                info_s.append(li)
                infos['inf'] = info_s
            infos['xingm'] = info        #初始化姓名表单
        return render(request, 'update.html', infos)
    
    #根据姓名更新个人信息
    def update_index(request):
        content = {}
        if request.method == 'POST':
            info = request.POST['xingming']  #获取表单数据
            num = int(request.POST['xuehao'])
            classroom = request.POST['xueyuan']
            school = request.POST['banji']
            number = request.POST['average']
            #按姓名查询数据库  更新学生信息
            Info.objects.filter(name=info).update(num=num, classroom=classroom, school=school, number=number)
            content['message'] = "数据修改成功"
        return render(request, 'update.html', content)
    
    #按姓名删除数据
    #显示待删除的数据
    def del_search_index(request):
        infos = {}
        if request.method == 'POST':
            info = request.POST['name']
            list = Info.objects.filter(name=info)
            for li in list:
                info_s = []
                info_s.append(li)
                infos['inf'] = info_s
            infos['xingm'] = info  # 初始化姓名表单
        return render(request, 'del.html', infos)
    
    #删除数据
    def del_index(request):
        content = {}
        if request.method == "POST":
            info = request.POST['name']  # 获取表单数据
            Info.objects.filter(name=info).delete()#删除单条数据
            content['message'] = "删除成功"
        return render(request, 'del.html', content)
    
    
    #登录首页
    def login(request):
        return render(request, 'login.html')
    
    
    #点击注册进行注册
    def login_register(request):
        if request.POST:
            if 'resg' in request.POST:                      #处理表单多键 判断按键的name属性
                return render(request, 'register.html')
            else:
                usr = request.POST['username']
                pwsd = request.POST['pwd']
                if usr and pwsd:
                    user = Register.objects.filter(name=usr)        #返回的是queryset列表形式
                    for p in user:
                        user = p.name
                        password = p.pwd
                        if usr == user and pwsd == password:
                            return redirect('index.html')           #验证成功跳转到首页否则提示错误
                        else:
                            content = {'tip': '账号或密码错误'}
                            return render(request, 'login.html', locals())
                else:
                    content = {'tip': '请输入账号和密码'}
                    return render(request, 'login.html', locals())
    
    
    
    #获取注册信息
    def register_get(request):
        if request.POST:
            name = request.POST['mingcheng']
            mima = request.POST['mima']
            tel = request.POST['tel']
            campus = request.POST['campus']
            if name and mima:
                Register.objects.create(name=name, pwd=mima, tel=tel, campus=campus)
                content = {'tip': '注册成功'}
            else:
                content = {'tip': '请输入账号和密码'}
        return render(request, 'register.html', locals())
    
    #查询注册账户
    def acount(request):
        infos = Register.objects.all()
        return render(request, 'acount.html', locals())
    

    网页代码没上载上来,实在有点多,有需要的朋友可以留言我发给你。

    展开全文
  • 基于Python-Django开发的商场后端管理系统,适合Python后端开发初学者参考,实现web项目开发,以及前后端连接,数据库操作,初步满足客服的业务需求
  • Django开发人员的Unix系统管理指南
  • SilverFox是一个采用Django和基于Bootstrap开发的Gentelella模板实现的KBEngine服务器后台管理系统
  • 直接使用Pycharm可以创建虚拟环境,在使用remote连接到开发机上。
  • Django开发 —— 搭建环境环境参数环境配置、pycharm创建django项目二、在本地mongodb创建数据库三、修改django配置,创建app四、自行配置数据库处理过程 环境参数 python:3.7 django:通过pip安装,过程省略 db...
  • 腾讯云Cloud Studio本身是没有自带sqlite3和Django,下面先安装这两, 安装sqlite3数据库,命令: sudo apt-get install sqlite3 查看下安装好的sqlite的版本: sqlite3 -version 安装Django2: pip3 ...
  • Spirit 是一个基于 Django 框架开发的论坛系统。主要特性包括:提醒、私聊、书签、归档、草稿、赞、响应式。
  • ERU-Manager 是一个基于 Django 框架开发的一款 CMDB 管理系统,功能主要包含: 管理系统管理的客户主机列表, 动态显示客户机状态信息, 远程指令操作指定客户机, 主机与客户机之间的文件传输以及完善的后台管理系统
  • 基于Django开发的学生信息管理系统

    万次阅读 多人点赞 2019-03-22 23:35:00
    、 功能 实现对学生对个人信息的增删查改 实现后台对所有学生信息的操作 二、开发工具 Windows + Pycharm + Mysql + Django 三、git地址 https://github.com/Gscsd8527/StudentSystem 四、代码实现 1. ...
  •  BOOKMS是一个公司内部的图书管理系统。  本系列用多次迭代方法,逐步实现一个图书管理系统BOOKMS。开发使用python语言和Django框架,数据库在开发时使用SQLite而部署时使用MySQL。开发工具推荐使用PyCharm。...
  • DeerU 是一个开源博客系统,它基于 Django 开发。正式版本提供了丰富的 json 数据接口,前端开发员可以不依赖 Django 模板开发主题,实现前后端分离。
  • 这是一个Django结合Python开发一个新闻发布系统
  • Django完整的开发一个博客系统

    万次阅读 热门讨论 2016-06-05 19:37:31
    今天花了一些时间搭了一个博客系统,虽然并没有相关于界面的美化,但是发布是没问题的。开发环境操作系统:windows 7 64位 Django: 1.96 Python:2.7.11 IDE: PyCharm 2016.1功能篇既然是博客系统,发布的自然...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,866
精华内容 12,746
关键字:

django开发一个管理系统