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导入txt数据到mysql的方法
Apr 08 Python
解决Python传递中文参数的问题
Aug 04 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
Sep 30 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
python实现程序重启和系统重启方式
Apr 16 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
Python自然语言处理之切分算法详解
Apr 25 Python
详解Python常用的魔法方法
Jun 03 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脚本加密专家php解密算法
2020/09/13 PHP
php实现利用phpexcel导出数据
2013/08/24 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
基于jQuery的让非HTML5浏览器支持placeholder属性的代码
2011/05/24 Javascript
angularJS 如何读写缓冲的方法(推荐)
2016/08/06 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
微信小程序如何获取地址
2019/12/24 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
python使用Paramiko模块实现远程文件拷贝
2019/04/30 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
python 装饰器重要在哪
2021/02/14 Python
美国体育用品在线:Modell’s Sporting Goods
2018/06/07 全球购物
关于逃课的检讨书
2014/01/23 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
如何写股份合作协议书
2014/09/11 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
2014年司机工作总结
2014/11/21 职场文书
小学教师工作总结2015
2015/04/07 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技