python搭建项目结构_Django搭建项目实战与避坑细节详解
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 到任意目录:
或者先打开目录窗口,在地址栏输入 cmd 回车,不需要 cd(推荐):
在命令行窗口输入命令创建 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 项目了:
为了让 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
数据库表就创建好了:
启动项目
万事俱备,只差 1 条启动命令,在根目录执行:
python manage.py runserver
访问 http://127.0.0.1:8000/,就可以看到来自 Django 老铁的这发火箭了:
小结
本文是对《匆匆一眼》文章的补充。介绍了如何安装 Django,创建 Django 的 project 和 app,连接 MySQL,执行数据迁移,最后启动项目的实际操作步骤。思路很清晰。整体流程清楚了,可这些文件都是干嘛的呢?
参考资料:
https://docs.djangoproject.com/en/3.1/intro/tutorial01/
到此这篇关于Django搭建项目实战与避坑细节的文章就介绍到这了,更多相关Django搭建项目与避坑内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
python搭建项目结构_Django搭建项目实战与避坑细节详解相关推荐
- python避坑_Django搭建项目实战与避坑细节详解
Django 开发项目是很快的,有多快?看完本篇文章,你就知道了. 安装 Django 前提条件:已安装 Python. Django 使用 pip 命令直接就可以安装: pip install dj ...
- 企业网络分配项目,从连接到登陆,一步步来详解交换机配置
弱电几乎大部分的项目都跟网络有关,而所有的网络都离不开交换机的配置,很多朋友弱电项目做的比较困难,主要还是对网络技术不了解,尤其是交换的配置,那么今天我们以实例来讲解,企业网络分配项目,从连接到登陆, ...
- python调用shell脚本的参数_使用python执行shell脚本 并动态传参 及subprocess的使用详解
最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数 执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库 subpr ...
- 代理后台中间件_Golang Gin 实战(十三)| 中间件详解看这一篇就够了
6000字大章带你死磕Golang Gin中间件 在Gin的整个实现中,中间件可谓是Gin的精髓.一个个中间件组成一条中间件链,对HTTP Request请求进行拦截处理,实现了代码的解耦和分离,并且 ...
- Git实战:branch分支操作详解
什么是分支 分支是指在主干道上分支的支线,可以前往不同的地方,也可以到达相同的终点(只是实现的路线不同).Git指向团队开发中的个体,各开发者可以有自己的分支,开发时不会影响其他分支的开发进度.分支完 ...
- 【前端就业课 第一阶段】HTML5 零基础到实战(六)表格详解
注意:手机(APP)打开,内容显示更佳,不会的私聊博主即可 想要拿代码或加入学习计划(** 博主会监督你并且教你写文章 **)的拉到最下面(PC端Web打开)加博主即可,目录也在最下面. 参加博主前端 ...
- 深入浅出多线程编程实战(五)ThreadLocal详解(介绍、使用、原理、应用场景)
深入浅出多线程编程实战(五)ThreadLocal详解(介绍.使用.原理.应用场景) 文章目录 一.ThreadLocal简介 二.ThreadLocal与Synchronized区别 三.Threa ...
- shell编程系列23--shell操作数据库实战之mysql命令参数详解
shell编程系列23--shell操作数据库实战之mysql命令参数详解mysql命令参数详解-u 用户名-p 用户密码-h 服务器ip地址-D 连接的数据库-N 不输出列信息-B 使用tab键代替 ...
- Python的Django框架中forms表单类的使用方法详解2
用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...
最新文章
- [51nod1384]全排列
- ionic4安卓真机调试
- C#Socket文件传输(发送与接收代码)
- mysql数据库操作手册
- DateTime 格式相比较,timestampdiff() 函数的运用
- 25.TCP/IP 详解卷1 --- SNMP:简单网络管理协议
- 解决IDEA 打开Springboot项目提示 Unmapped Spring configuration files found.
- 解决因卸载WPS导致Excel表格打开提示“xls文件格式和扩展名不匹配,文件可能已损坏或不安全”
- netware php_Linux中NetWare客户端简易安装说明(转)
- html5版堆糖,堆糖(Duitang)
- 百度、高德地图数据源是哪里?
- 感冒发烧没想象中可怕:人体自我保护清除体内感染
- 又是一道题拉开差距!IOI落幕,中国队三金一银,美国华人选手再获冠军
- golang学习之negroni/gizp源码分析
- 如何理解卷积:信号处理、图像处理中的应用
- 关于程序员日常接单之淘宝运营
- PostgreSQL统计表占用空间
- bp神经网络 鸢尾花matlab,神经网络(BP网)—鸢尾花分类问题.pdf
- 布朗特克(Bron.tok)病毒专杀工具
- HTML中的多行输入框:textarea标签、cols属性、rows属性。
热门文章
- 使用C# (.NET Core) 实现命令设计模式 (Command Pattern)
- ASP.NET Core 2.0 自定义 _ViewStart 和 _ViewImports 的目录位置
- 计算机基础知识的文献,四 计算机文献检索基础知识(原理、结构和功能)
- 【天工Godwork精品教程】任务四:EOS正射影像DOM生成,DOM精编
- C#实现树的双亲表示法
- Android之判断手机黑屏以及锁屏
- oracle 导库时日志满了,oracle rac 11g 日志占满系统盘导致数据库down掉
- java 从数据库取值_java 连接数据库取值问题
- php post授权编写,php模拟post行为代码总结(POST方式不是绝对安全)
- ​怎么用藏头诗向女友表白......