创建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中使用zlib模块进行数据压缩的教程
Jun 26 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
python Pygame的具体使用讲解
Nov 03 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
基于python实现在excel中读取与生成随机数写入excel中
Jan 04 Python
使用requests库制作Python爬虫
Mar 25 Python
python正则表达式之对号入座篇
Jul 24 Python
Python中拆分字符串的操作方法
Jul 23 Python
对于Python深浅拷贝的理解
Jul 29 Python
python 实现识别图片上的数字
Jul 30 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
PyTorch-GPU加速实例
Jun 23 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之第四天
2006/10/09 PHP
php读取xml实例代码
2010/01/28 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
php模拟post提交数据的方法
2015/02/12 PHP
javascript 三种编解码方式
2010/02/01 Javascript
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
2017/05/04 jQuery
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
python实现基本进制转换的方法
2015/07/11 Python
Python中列表元素转为数字的方法分析
2016/06/14 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
数控专业毕业生求职信范文
2013/09/21 职场文书
趣味比赛活动方案
2014/02/15 职场文书
《美丽的田园》教学反思
2014/03/01 职场文书
美食节策划方案
2014/05/26 职场文书
中华魂放飞梦想演讲稿
2014/08/26 职场文书
计生个人工作总结
2015/02/28 职场文书
刮痧观后感
2015/06/05 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL