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编程中基本的数学计算使用
Feb 04 Python
详解python基础之while循环及if判断
Aug 24 Python
python正则实现计算器功能
Dec 14 Python
使用python进行文本预处理和提取特征的实例
Jun 05 Python
对Django中内置的User模型实例详解
Aug 16 Python
Python中的延迟绑定原理详解
Oct 11 Python
OpenCV模板匹配matchTemplate的实现
Oct 18 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
python右对齐的实例方法
Jul 05 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 Python
python异步的ASGI与Fast Api实现
Jul 16 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+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
深入理解Promise.all
2018/08/08 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
python分析作业提交情况
2017/11/22 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
python中有帮助函数吗
2020/06/19 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
2014升学宴答谢词
2014/01/26 职场文书
大学生开西餐厅创业计划书
2014/02/01 职场文书
大学生演讲稿
2014/04/25 职场文书
医院领导班子整改方案
2014/10/01 职场文书
五年级小学生评语
2014/12/26 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python