创建Django项目图文实例详解


Posted in Python onJune 06, 2019

本文实例讲述了创建Django项目的方法。分享给大家供大家参考,具体如下:

创建Django项目

创建一个HelloDjango项目

GitHub地址:https://github.com/liangdongchang/HelloDjango.git

1、在linux命令窗口终端下
  • 创建Django项目

    django-admin.py startproject HelloDjango
    sudo apt install tree
    tree HelloDjango/
2、在PyCharm中创建

file->New Project->Dhango

创建Django项目图文实例详解

3、默认工程结构
  • HelloDjango
    • _init_.py
    • 一个普通的包初始化模块
    • 可以在其中做全局的初始化动作
      • 例如:导入和初始化数据库
    • settings.py
    • Django项目的配置文件
    • 本项目引用的组件
    • 项目名
    • 数据库配置
    • 时间、语言
    • 静态文件访问地址和存储路径
    • urls.py
    • 维护项目的URL路由映射
      • 当客户端访问时由哪个模块进行响应
    • 使用views.py中的函数响应请求
      • url(r'^$', views.home)
    • 将特定请求全部转交子模块中的urls.py处理
      • url(r'^axf/', include(‘App.urls', namespace='axf'))
    • wsgi.py
    • 定义WSGI的接口信息
    • 用于服务器部署
    • 通常使用系统默认设置即可
  • manage.py
    • Django用于管理本项目的命令行工具
    • 运行站点
    • 数据库自动生成
4、开启Django服务

在左下角找到Terminal,点击,在命令窗口中输入:

python manage.py runserver

创建Django项目图文实例详解

在浏览器输入服务器地址:http://127.0.0.1:8000/,可以看到服务器已经启动,按ctrl+c可以关闭服务器。

5、创建子应用

在命令窗口中输入:

python manage.py startapp MyApp

MyApp结构如下:

创建Django项目图文实例详解

  • 应用目录结构
    • _init_.py:其中暂无内容,使得app成为一个包
    • admin.py:管理站点模型的声明文件,默认为空
    • apps.py:应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等数据
    • models.py:添加模型层数据类文件
    • views.py:定义URL相应函数(路由规则)
    • migrations包:自动生成,数据迁移文件
    • tests.py:测试代码文件
6、注册子应用

在工程目录的settings.py中注册应用

创建Django项目图文实例详解

7、 定义数据模型(Models)
1、定义班级类

在MyApp目录下的models.py中插入如下代码:

# 班级类
class Grade(models.Model):

 # 班级名称
 gname = models.CharField(max_length=10)

 # 开班日期
 gdate = models.DateTimeField()

 # 女生数量
 ggirlnum = models.IntegerField()

 # 男生数量
 gboynum = models.IntegerField()

 # 是否已逻辑删除该班级
 isDelete = models.BooleanField(default=False)

 # 定义班级的打印输出信息
 def __str__(self):
  return self.gname
2、定义学生类
# 学生类
class Students(models.Model):
 # 学生姓名
 sname = models.CharField(max_length=20)

 # 学生性别
 sgender = models.BooleanField(default=True)

 # 学生年龄
 sage = models.IntegerField()

 # 备注信息
 sinfo = models.CharField(max_length=20)

 # 是否已逻辑删除该学生
 isDelete = models.BooleanField(default=False)

 # 学生所属的班级
 sgrade = models.ForeignKey(Grade,on_delete=None)

 def __str__(self):
  return self.sname

on_delete参数的各个值的含义:

on_delete=None,    # 删除关联表中的数据时,当前表与其关联的field的行为
on_delete=models.CASCADE,  # 删除关联数据,与之关联也删除
on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做
on_delete=models.PROTECT,  # 删除关联数据,引发错误ProtectedError
# models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)
# models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)
on_delete=models.SET,   # 删除关联数据,
 a. 与之关联的值设置为指定值,设置:models.SET(值)
 b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
8、数据迁移
  • 迁移的概念: 就是将模型映射到数据库的过程

  • 生成迁移

    python manage.py makemigrations
  • 执行迁移(在MyApp下的migrations包中)

    python manage.py migrate
    • 迁移过后,框架为我们自动生成了库表,Django默认自带的数据库是SQLite数据库;

    • 数据库文件生成路径为工程根目录下的db.sqlite3;

    创建Django项目图文实例详解

    • 生成的数据表结构如图

    创建Django项目图文实例详解

给数据库添加数据:
班级表:

创建Django项目图文实例详解

学生表:

创建Django项目图文实例详解

9、创建页面(Templates)
  • 修改HelloDjango下的settings.py中的模板配置

创建Django项目图文实例详解

  • 修改settings.py中的模板配置中的静态资源配置

    # 静态文件访问路由
    
    STATIC_URL = '/static/'
    
    
    # 静态文件存储目录:根目录/static/
    
    STATICFILES_DIRS = [
     os.path.join(BASE_DIR, 'static'),
    ]
  • 创建【根目录/static/img/】目录并放入一张wolf.jpg图片

    创建Django项目图文实例详解

  • 创建templates目录并在其中创建wolf.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>忧伤的狼</title>
    </head>
    <body>
    {# 加载静态资源 #}
    {% load static %}
    
    {# 加载图片位置 #}
    <img src="{% static 'img/wolf.jpg' %}" alt="我忧伤的眼神">
    </body>
    </html>

    创建Django项目图文实例详解

10、定义路由映射(urls)
  • 在HelloDjango下的urls.py中插入如下代码

    from django.conf.urls import url
     from django.contrib import admin
    
    
     from MyApp import views
    
     urlpatterns = [
     url(r'^admin/', admin.site.urls),
     # http://127.0.0.1:8000/请求交由HelloDjango下的views中的index函数处理
     url(r'^wolf', views.wolf),
    ]

11、定义路由处理函数(Views)
  • 在MyApp下的views中插入如下代码:

    # http://127.0.0.1:8000/wolf/
    
    def wolf(request):
    
    # 渲染页面并呈现给用户
    
     return render(request,'wolf.html')
12、运行项目

终端执行如下命令中的一条

python manage.py runserver
python manage.py runserver [port]
python manage.py runserver [ip:port]
  • 默认执行起来的端口是8000
  • ip指定为0.0.0.0的时候,匹配本机的全部ip
  • 浏览器访问:localhost:8000
13、访问测试

创建Django项目图文实例详解

[参考网址]:https://3water.com/article/162625.htm

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
python切换hosts文件代码示例
Dec 31 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
简单谈谈Python的pycurl模块
Apr 07 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
Jan 02 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
pandas的qcut()方法详解
Jul 06 Python
查看端口并杀进程python脚本代码
Dec 17 Python
基于python监控程序是否关闭
Jan 14 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 Python
Django网络框架之HelloDjango项目创建教程
Jun 06 #Python
python操作小程序云数据库实现简单的增删改查功能
Jun 06 #Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 #Python
浅析Python3中的对象垃圾收集机制
Jun 06 #Python
聊聊python里如何用Borg pattern实现的单例模式
Jun 06 #Python
使用Python实现毫秒级抢单功能
Jun 06 #Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 #Python
You might like
php 学习资料零碎东西
2010/12/04 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
php使用cookie显示用户上次访问网站日期的方法
2015/01/26 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
D3.js实现折线图的方法详解
2016/09/21 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
基于Vue制作组织架构树组件
2017/12/06 Javascript
详解使用vue-admin-template的优化历程
2018/05/20 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
点球小游戏python脚本
2018/05/22 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
python scatter函数用法实例详解
2020/02/11 Python
python在不同条件下的输入与输出
2020/02/13 Python
OpenCV 表盘指针自动读数的示例代码
2020/04/10 Python
Notino法国:购买香水和化妆品
2019/04/15 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
临床专业自荐信
2014/06/22 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript