Django搭建项目实战与避坑细节详解


Posted in Python onDecember 06, 2020

Django 开发项目是很快的,有多快?看完本篇文章,你就知道了。

安装 Django

前提条件:已安装 Python。

Django 使用 pip 命令直接就可以安装:

pip install django

如果安装失败,很可能是因为网络连接超时了,试试国内镜像:

pip install --default-timeout=6000 -i https://pypi.tuna.tsinghua.edu.cn/simple django

这条命令同时延长了超时时间,提高成功率。

安装完成后,通过 django-admin --version 这条命令验证。

创建 project

按住 Windows 键 + R,输入 cmd 回车,接着 cd 到任意目录:

Django搭建项目实战与避坑细节详解

或者先打开目录窗口,在地址栏输入 cmd 回车,不需要 cd(推荐):

Django搭建项目实战与避坑细节详解

在命令行窗口输入命令创建 project:

django-admin startproject mysite

目录结构如下(注意有 2 个 mysite 哦):

mysite/
 manage.py
 mysite/
  __init__.py
  settings.py
  urls.py
  asgi.py
  wsgi.py

创建 app

Django 项目由 1 个 project 和多个 app 组成。project 存放项目配置,app 是网站各个功能的具体实现。

app 的放置目录没有限制,这里先放在和 mysite 的同级目录中,先进入外层的 mysite 文件夹:

cd mysite

输入命令创建:

django-admin startapp polls

目录结构如下:

mysite/
	polls/
  __init__.py
  admin.py
  apps.py
  migrations/
   __init__.py
  models.py
  tests.py
  views.py
 mysite/
 manage.py

使用 cmd 创建完 project 和 app 以后,就可以打开 PyCharm,再 Open mysite 项目了:

Django搭建项目实战与避坑细节详解

为了让 app 和 project 关联起来,需要在 mysite/settings.py 文件中添加配置:

INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'polls.apps.PollsConfig', # 添加
]

在 polls/models.py 文件中添加数据模型:

from django.db import models


class Question(models.Model):
 question_text = models.CharField(max_length=200)
 pub_date = models.DateTimeField('date published')


class Choice(models.Model):
 question = models.ForeignKey(Question, on_delete=models.CASCADE)
 choice_text = models.CharField(max_length=200)
 votes = models.IntegerField(default=0)

连接 MySQL

前提条件:已安装 MySQL,创建好数据库。

Django 默认使用轻量级数据库 SQLite,我们切换为常用的 MySQL。

修改 mysite/settings.py 中的数据库配置:

DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.mysql',
  'HOST': '主机',
  'PORT': 端口,
  'NAME': '数据库名',
  'USER': '用户名',
  'PASSWORD': '密码'
 }
}

Django 默认通过底层调用 mysqlclient 这个库和 MySQL 交互。但是 mysqlclient 非常不好安装!我们改用 pymysql。

先安装:

pip install pymysql

然后在与 mysite/settings.py 文件同级的 __init__ 文件中添加:

import pymysql

pymysql.version_info = (1, 4, 0, "final", 0)
pymysql.install_as_MySQLdb()

数据迁移

数据迁移,指的是把代码中的数据模型,迁移到数据库中,创建相应的表结构。

第一步,告诉 Django 数据模型有更新:

python manage.py makemigrations polls

执行后输出:

Migrations for 'polls':
 polls/migrations/0001_initial.py
 - Create model Question
 - Create model Choice

第二步,执行数据迁移同步:

python manage.py migrate

执行后输出:

Operations to perform:
 Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
 Rendering model states... DONE
 Applying polls.0001_initial... OK

数据库表就创建好了:

Django搭建项目实战与避坑细节详解

启动项目

万事俱备,只差 1 条启动命令,在根目录执行:

python manage.py runserver

访问 http://127.0.0.1:8000/,就可以看到来自 Django 老铁的这发火箭了:

Django搭建项目实战与避坑细节详解

小结

本文是对《匆匆一眼》文章的补充。介绍了如何安装 Django,创建 Django 的 project 和 app,连接 MySQL,执行数据迁移,最后启动项目的实际操作步骤。思路很清晰。整体流程清楚了,可这些文件都是干嘛的呢?

参考资料:

https://docs.djangoproject.com/en/3.1/intro/tutorial01/

到此这篇关于Django搭建项目实战与避坑细节的文章就介绍到这了,更多相关Django搭建项目与避坑内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python聚类算法之DBSACN实例分析
Nov 20 Python
python3 模拟登录v2ex实例讲解
Jul 13 Python
创建pycharm的自定义python模板方法
May 23 Python
python-str,list,set间的转换实例
Jun 27 Python
wxPython的安装与使用教程
Aug 31 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
Apr 25 Python
django的ORM操作 增加和查询
Jul 26 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
Pyecharts 中Geo函数常用参数的用法说明
Feb 01 Python
python自动获取微信公众号最新文章的实现代码
Jul 15 Python
python温度转换华氏温度实现代码
Dec 06 #Python
python openssl模块安装及用法
Dec 06 #Python
python help函数实例用法
Dec 06 #Python
python中复数的共轭复数知识点总结
Dec 06 #Python
pycharm + django跨域无提示的解决方法
Dec 06 #Python
scrapy头部修改的方法详解
Dec 06 #Python
python os.rename实例用法详解
Dec 06 #Python
You might like
PHP date函数参数详解
2006/11/27 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
dojo 之基础篇
2007/03/24 Javascript
jquery中:input和input的区别分析
2011/07/13 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
Django中的CBV和FBV示例介绍
2018/02/25 Python
ubuntu系统下使用pm2设置nodejs开机自启动的方法
2018/05/12 NodeJs
Python应用库大全总结
2018/05/30 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
opencv python图像梯度实例详解
2020/02/04 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
什么造成了Java里面的异常
2016/04/24 面试题
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
ktv中秋节活动方案
2014/01/30 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
住房租房协议书
2014/08/20 职场文书
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python