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实现的防DDoS脚本
Feb 08 Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 Python
python 循环读取txt文档 并转换成csv的方法
Oct 26 Python
Django如何实现网站注册用户邮箱验证功能
Aug 14 Python
python爬虫 基于requests模块的get请求实现详解
Aug 20 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
Nov 15 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 Python
重写django的model下的objects模型管理器方式
May 15 Python
Python如何实现的二分查找算法
May 27 Python
Python txt文件如何转换成字典
Nov 03 Python
利用python进行文件操作
Dec 04 Python
python函数指定默认值的实例讲解
Mar 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实现javascript的escape和unescape函数
2013/06/29 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
JsRender实用入门教程
2014/10/31 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
面试常见的js算法题
2017/03/23 Javascript
关于webpack代码拆分的解析
2017/07/20 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python递归计算N!的方法
2015/05/05 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
Python tkinter常用操作代码实例
2020/01/03 Python
python实现3D地图可视化
2020/03/25 Python
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
本科生的职业生涯规划范文
2014/01/09 职场文书
25岁生日感言
2014/01/13 职场文书
行政专员求职信范文
2014/05/03 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
求职自我评价怎么写
2015/03/09 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
女性励志书籍推荐
2019/08/19 职场文书
励志语录:时光飞逝,请学会珍惜所有的人和事
2020/01/16 职场文书
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫