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正则表达式操作指南(re使用)
Sep 06 Python
python使用urllib2模块获取gravatar头像实例
Dec 18 Python
浅谈Python中的数据类型
May 05 Python
Python解决八皇后问题示例
Apr 22 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
Win10环境python3.7安装dlib模块趟过的坑
Aug 01 Python
Python Django2.0集成Celery4.1教程
Nov 19 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
用Python实现职工信息管理系统
Dec 30 Python
python SOCKET编程基础入门
Feb 27 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中如何定义和使用常量
2013/02/28 PHP
PHP strstr 函数判断字符串是否否存在的实例代码
2013/09/28 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
2016/05/27 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
Python ljust rjust center输出
2008/09/06 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python操作redis方法总结
2018/06/06 Python
python实现图片筛选程序
2018/10/24 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
python远程连接MySQL数据库
2019/04/19 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
公司庆典活动邀请函
2014/01/09 职场文书
24岁生日感言
2014/01/13 职场文书
法制宣传月活动总结
2014/04/29 职场文书
国庆横幅标语
2014/10/08 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python