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系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
在Python中使用列表生成式的教程
Apr 27 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
谈谈如何手动释放Python的内存
Dec 17 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
python读取csv和txt数据转换成向量的实例
Feb 12 Python
python elasticsearch环境搭建详解
Sep 02 Python
python实现斗地主分牌洗牌
Jun 22 Python
Pycharm Git 设置方法
Sep 15 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
python使用yaml 管理selenium元素的示例
Dec 01 Python
Python中Cookies导出某站用户数据的方法
May 17 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
2006/12/14 PHP
php生成略缩图代码
2012/07/16 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
javascript闭包入门示例
2014/04/30 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
HTML5+jQuery插件Quicksand实现超酷的星际争霸2兵种分类展示效果(附demo源码下载)
2016/05/25 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
浅析Proxy可以优化vue的数据监听机制问题及实现思路
2018/11/29 Javascript
JS实现轮播图效果
2020/01/11 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
python实现百度关键词排名查询
2014/03/30 Python
Python写一个基于MD5的文件监听程序
2019/03/11 Python
python计算二维矩形IOU实例
2020/01/18 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
解决Keras中Embedding层masking与Concatenate层不可调和的问题
2020/06/18 Python
python 制作简单的音乐播放器
2020/11/25 Python
介绍一下Linux文件的记录形式
2012/04/18 面试题
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
发展党员工作情况汇报
2014/10/28 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
车位出租协议书范本
2016/03/19 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP
windows server 2016 域环境搭建的方法步骤(图文)
2022/06/25 Servers
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS