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 文件读写操作实例详解
Mar 12 Python
跟老齐学Python之网站的结构
Oct 24 Python
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
python http接口自动化脚本详解
Jan 02 Python
Python3 中文文件读写方法
Jan 23 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 Python
docker-py 用Python调用Docker接口的方法
Aug 30 Python
PyTorch加载自己的数据集实例详解
Mar 18 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 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模拟登陆的实现方法分析
2015/01/09 PHP
PHP MVC框架skymvc支持多文件上传
2016/05/26 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
如何用javascript去掉字符串里的所有空格
2007/02/08 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
JQuery实现文字无缝滚动效果示例代码(Marquee插件)
2017/03/07 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
详解ESLint在Vue中的使用小结
2018/10/15 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
Python实现调度算法代码详解
2017/12/01 Python
numpy添加新的维度:newaxis的方法
2018/08/02 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
2019/06/14 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
python烟花效果的代码实例
2020/02/25 Python
CSS3 Backgrounds属性相关介绍
2011/05/11 HTML / CSS
Intimissimi德国网上商店:意大利知名内衣品牌
2018/04/03 全球购物
软件测试英文面试题
2012/10/14 面试题
卖房协议书
2014/04/11 职场文书
环保倡议书500字
2014/05/15 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
党员自评材料范文
2014/12/17 职场文书
商场收银员岗位职责
2015/04/07 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
新手初学Java网络编程
2021/07/07 Java/Android