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 中整型对象存储的位置
May 16 Python
python爬虫的工作原理
Mar 05 Python
python redis 删除key脚本的实例
Feb 19 Python
python爬虫之验证码篇3-滑动验证码识别技术
Apr 11 Python
Python实现微信翻译机器人的方法
Aug 13 Python
使用python模拟命令行终端的示例
Aug 13 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
python3实现微型的web服务器
Sep 03 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
pytorch实现保证每次运行使用的随机数都相同
Feb 20 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
在keras中实现查看其训练loss值
Jun 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
ThinkPHP之getField详解
2014/06/20 PHP
php实现将数组转换为XML的方法
2015/03/09 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
告诉大家什么是JSON
2008/06/10 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
轻松创建nodejs服务器(3):代码模块化
2014/12/18 NodeJs
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
javascript针对不确定函数的执行方法
2015/12/16 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python获取网页状态码示例
2014/03/30 Python
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
在python中画正态分布图像的实例
2019/07/08 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
上海期货面试题
2014/01/31 面试题
拾金不昧表扬信范文
2014/01/11 职场文书
南京导游词
2015/02/03 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
2016年元旦寄语
2015/08/17 职场文书
pytorch中的 .view()函数的用法介绍
2022/03/17 Python