经过上一篇 python 入门实战 - 学生管理系统 练习了一把 python 语法。本篇总结下 Django 这个 web 框架的入门使用。前提是要有相关的 web 开发经验(Java, php等)。由于本文不会涉及 http 协议,先后端分离不分离等概念。php
另附:css
安装 django (非 maOS 操做系统 请参考开篇的教程选择安装方式,以及验证是否安装成功)html
python3 -m pip install django==1.11.6
建立项目python
django-admin startproject helloworld(这个是项目名)
图中标记了 4 个地方 1. 建立完 helloworld 项目后,会发现helloworld 下面还有一个 helloworld, 后面说到的 helloworld 通常都是第一层级,简称项目根目录 2. settings.py 主要是一些配置,好比数据库,静态文件存放位置等 3. urls.py 主要配置 url 和 函数的映射关系 4. manage.py 提供用来管理项目的命令,好比启动项目,后面请多留意
进入项目根目录mysql
cd helloworld
启动项目,并访问web
(这里会启动失败,缘由是 python3 和 django 的兼容问题,反正我用的 django 版本存在这个问题,解决方式就是删除某个文件的一个 逗号,若是碰见了,百度一搜就明白了,具体内容当初忘记保存了)sql
python3 manage.py runserver // 固然也能够指定ip:host python3 manage.py runserver localhost:8080
至此咱们就能够自行开发 web 应用了,可是你也许还会问数据库
下面就新建的 helloword 项目进行讲解django
问题 1. 函数及其映射关系后端
找到 helloworld/helloworld/ 下面有个 urls.py 文件
默认配置:
from django.conf.urls import url from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ]
修改后:
from django.conf.urls import url from django.contrib import admin # 下面是新增的 from django.shortcuts import HttpResponse, render, redirect # 1. 跳转页面 # render 表示 访问 http://localhost:8000/index 会跳转到 index.html 页面 def index(request): return render(request, 'index.html') # 2. 跳转页面,并携带参数 def index02(request): return render(request, 'index.html', {'参数名', 值}) # 3. 重定向 def index03(request): return redirect('/index/') # 4. 接收参数 def index04(request): # 接收 post 请求参数 request.POST.get('参数名') # 接收 get 请求参数 request.GET.get('参数名') return render(request, 'index.html') # 配置 url 映射 urlpatterns = [ url(r'^admin/', admin.site.urls), # 配置 url 映射 # 访问 http://localhost:8000/index/ 就会调用上面的 index 函数 url(r'^index/', index), # TODO 省略 index02, index03, index 04 映射配置 ]
- 静态文件存放位置
找到 helloworld/helloworld/ 下面有个 settings.py 文件
html 文件配置: 大概 50 多行的位置
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 修改这个配置项以下 # 而后在项目根目录下,新建 templates 目录,用于存放 html 文件 'DIRS': [ os.path.join(BASE_DIR, 'templates') ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
css,js ,image 文件配置: 在 settings.py 文件末尾
STATIC_URL = '/static/' # 在 项目根目录 helloworld 下面 # 固然还有别名的用法,刚开始学,多说无益
如何在 html 中引用 css,js
<!DOCTYPE html> <html lang="en"> <head> <script src='/static/test.js'></script> <title>Document</title> </head> <body> </body> </html>
上面有些写法多为练习使用,所以不太规范。好比咱们在 helloword/helloword/urls.py 写了一大堆函数,很是不雅观。因此如今引入一个新的东西。
在项目根目录下,执行
python3 manage.py startapp app(模块名) # 这是咱们第二次使用 manage.py 这个文件, # 第一次是启动项目,如今应该能够理解 这个文件是干吗用的 # 执行结束,咱们会发现项目根目录下多了一个 app 目录
让 django 知道你新增的 app 模块
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 新增 'app.apps.AppConfig' # 也能够直接写 'app' # app 就是新增的目录名 后面的 固定, # 你也能够打开 app/apps.py 文件,看看 ]
app 目录下 有个 views.py 文件,咱们能够把函数定义在这里。
from django.shortcuts import HttpResponse, render, redirect def index(request): return render(request, 'index.html')
而后回到 helloword/helloword/urls.py 文件中,修改后以下:
# 1. 导入函数 from app.views import index # 2. 配置 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', index), ]
如何配置 mysql 数据库
一样找到 helloworld/helloworld/ 下面有个 settings.py 文件,大概 70-80行左右
修改后以下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'student_sys', # 库 'USER': 'root', 'PASSWORD': '123456', 'HOST': 'localhost', 'PORT': 3306 } }
而后找到 helloworld/app/init.py 文件
文件默认是空的, 添加以下配置
import pymysql # 告诉 django 用 pymysql 代替 mysqldb pymysql.install_as_MySQLdb()
引入 orm
进入 helloworld/app/ 目录找到 models.py 文件,修改以下:
from django.db import models # 定义一个 Student 类 class Student(models.Model): id = models.AutoField(primary_key=True) # 主键 name = models.CharField(max_length=20) # 字符类型 sex = models.CharField(max_length=2) birthday = models.CharField(max_length=10) def __str__(self): return self.name + "\t" + self.sex + "\t" + self.birthday
在项目根目录 helloworld 下依次执行
python3 manage.py makemigrations python3 manage.py migrate
会自动帮咱们生成表
也许你还会困惑:
~~~~~ 请自行探索
自我吐槽: 其实这样的教程很鸡肋,担忧篇幅过长看的人眼花缭乱。
写完以后,感受本文的定位更多的是自我总结,可能大家看到这文章会吐槽,喷我~~~