创建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压缩和解压缩zip文件
Feb 14 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
浅谈python中的面向对象和类的基本语法
Jun 13 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 Python
对python多线程与global变量详解
Nov 09 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
python实现猜拳小游戏
Apr 05 Python
pandas实现将日期转换成timestamp
Dec 07 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 Python
python 轮询执行某函数的2种方式
May 03 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
jQuery中的ajax async同步和异步详解
2015/09/29 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
基于JS代码实现简单易用的倒计时 x 天 x 时 x 分 x 秒效果
2017/07/13 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
python实现简单购物商城
2016/05/21 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
Flask解决跨域的问题示例代码
2018/02/12 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
基于keras 模型、结构、权重保存的实现
2020/01/24 Python
Python3 集合set入门基础
2020/02/10 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
django之导入并执行自定义的函数模块图解
2020/04/01 Python
python利用platform模块获取系统信息
2020/10/09 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
大学考试作弊检讨书
2014/01/30 职场文书
学习雷锋倡议书
2014/04/15 职场文书
艾滋病宣传活动总结
2014/05/08 职场文书
办公室岗位职责
2015/02/04 职场文书
出国留学单位推荐信
2015/03/26 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书