1、 环境准备
1、 下载、安装集成开发环境PyCharm
PyCharm官网:https://www.jetbrains.com/pycharm/download/#section=windows
下载完毕,双击.exe文件安装即可。
2、 下载、安装Python包管理器anaconda
anaconda官网:https://www.anaconda.com/
下载完毕,双击.exe文件安装即可。
3、 安装 Web 应用框架django
1、 打开安装好的PyCharm,file->New Project,新建名为webServer项目
2、 点击Terminal,运行创建项目命令:python -m pip install Django
4、 安装打包成exe文件命令pyinstaller
1、 切换到项目根路径【cd D:\python\xuexi\learnDjango\webServer】,Terminal中运行启动项目命令:pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller
2、 创建项目(web开发服务器)
1、Terminal中运行创建项目命令:django-admin startproject webServer
2、 Terminal中运行启动项目命令:python manage.py runserver
3、 浏览器访问地址:http://127.0.0.1:8000/
成功创建项目!
3、 创建应用程序(app)
1. Terminal中运行创建应用程序命令:python manage.py startapp app
2. 注册该应用程序
setting.py中INSTALLED_APPS模块添加应用程序名
3. 编辑应用程序(app)的视图模板(view.py),向页面输出:hello world
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse("hello world!")
4. 修改路由(urls.py)
为了方便管理,根据路由分发规则来操作。
4.1 在应用程序添加路由文件(app/urls.py),并指向视图模板新建且需要执行的函数。
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
如图所示:
4.2 在项目的路由文件(webserver/urls.py)添加每个应用程序的路径。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('app/', include('app.urls')),
# path('admin/', admin.site.urls),
]
如图所示:
4.3 Terminal中运行启动命令启动(app)应用程序:python manage.py runserver
演示:
4、 模板操作
1、 webServer项目新建模板templates文件夹
2、 修改项目模板templates文件的默认路径
setting.py中TEMPLATES模块中的DIRA添加模板基础路径
'DIRS': [os.path.join(BASE_DIR, 'templates')],
如图所示
3、 新建页面index.html,编辑页面显示内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div align="center"><h1>Hello world!</h1></div>
</body>
</html>
如图所示:
4、 修改对应view.py文件内容,渲染index.html页面
# Create your views here.
from django.http import HttpResponse
from django.shortcuts import render
from django.views.decorators.csrf import csrf_exempt
from .models import data
import time
def index(request):
return render(request, 'index.html')
如图所示:
5、 Terminal中运行启动命令启动:python manage.py runserver
5、 前后端交互【form表单】
1、 前端提交
index.html的body中插入form表单提交代码,后端根据input中的name接收数据
<form action="/app/" method="post"></br>
<!-- csrf\_token-->
UM: <input type="text" name="um">
分机号:<input type="text" name="num">
<input type="submit" value="提交">
</form>
演示:
2、 后端处理(接收、过滤、返回)
app/view.py添加接收数据函数:
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def getData(request):
num_list = []
if request.method == 'POST':
um = request.POST.get('um')
num = request.POST.get('num')
print(um, num)
temp = {'um': um, 'num': num}
num_list.append(temp)
return render(request, 'index.html', {'data': num_list})
else:
return render(request, 'index.html')
app/urls.py修改执行函数:
urlpatterns = [
path('', views.getData, name='getData'),
# path('', views.index, name='index'),
]
刷新输入数据演示:
3、 前端显示
index.html的body中添加显示代码
<h3>展示</h3>
<table border="1" width="50%" align="center">
<tr>
<th>UM</th>
<th>分机号</th>
</tr>
{% for item in data %}
<tr>
<td width="50%" align="center">{{ item.um }}</p></td>
<td width="50%" align="center">{{ item.num }}</p></td>
</tr>
{% endfor %}
演示:
6、 前后端与数据库sqlite交互
python 自带SQLite数据库,Django支持各种主流的数据库,且创建项目的时候已经同步添加了sqlite数据库文件,非常方便,所以作为初学者,这里直接选择使用SQLite。
1. 创建表
1. 创建data表
# Create your models here.
# app应用下面的models.py中创建表.
# models.py中书写一个类就是创建一个表,这个类必须继承models.Modeld.
from django.db import models
class data(models.Model):
# 1.创建字段(id主键、un字段、number字段、handler字段、c_time字段)
id = models.AutoField(primary_key=True, verbose_name='主键')
um = models.CharField(max_length=32, verbose_name='um')
number = models.CharField(max_length=32, verbose_name='分机号')
handler = models.CharField(max_length=32, verbose_name='处理人')
c_time = models.CharField(max_length=32, verbose_name='创建时间')
2. 数据库迁移
记录对model.py的改动,保存到migrations文件下的init.py【Teminal中执行命令:python manage.py makemigrations】
3. 同步才数据库
将操作真正同步到数据库中:【Teminal中执行命令:python manage.py migrate】
2. 添加数据
def getData(request):
num_list = []
if request.method == 'POST':
...
data_1 = data()
data_1.um = um
data_1.number = number
data_1.handler = 'zhangsan'
data_1.c_time = time.strftime(" %Y-%m-%d")
data_1.save()
return render(request, 'index.html', {'data': data.objects.all()})
else:
return render(request, 'index.html', {'data': data.objects.all()
})
3. 查看数据
<h3>展示</h3>
<table border="1" width="50%" align="center">
<tr>
<th>UM</th>
<th>分机号</th>
<th>处理人</th>
<th>创建时间</th>
</tr>
{% for item in data %}
<tr>
<td width="" align="center">{{ item.um }}</p></td>
<td width="" align="center">{{ item.number }}</p></td>
<td width="" align="center">{{ item.handler }}</p></td>
<td width="" align="center">{{ item.c_time }}</p></td>
</tr>
{% endfor %}
7、项目打包
D:\python\xuexi\learnDjango\webServer> pyinstaller manage.spec
D:\python\xuexi\learnDjango\webServer\dist\manage>manage.exe runserver --noreload