快速入门Django(在网页写入内容,并将其显示在另一网页)
在熟悉了官网的操作以后,用个例子来练习把
本文能够实现的功能:
创建数据库,在网页输入信息,并在另一个网页中显示出来。
本文参考了两个博客,自己做了些改动,附上原博客链接:
是https://blog.****.net/qy20115549/article/details/78439693#t1
和https://blog.****.net/qq_34081993/article/details/79229784
插个楼,网上看到的流程图,觉得不错:
Django流程图
- 用户通过浏览器请求页面
- 请求到达请求中间件,可以接受或拒绝请求
- URLConf通过urls.py文件和请求的URL找到相应的View
- View Middlewares被访问,它同样可以对request做一些处理或者直接返回response。
- 调用View中的函数。
- View中的方法可通过Models访问底层的数据
- 所有的Model-to-DB的交互都是通过manager完成的
- 如果需要,Views可以使用一个特殊的Context
- Context被传给Template用来生成页面
a. Template使用Filters和Tags去渲染输出
b. 输出被返回到View
c. HTTPResponse被发送到Response Middlewares
d. 任何Response Middlewares都可以丰富response或者返回一个完全不同的response
e. Response返回到浏览器,呈现给用户
OK,办正事
1.项目创建
进入命令行窗口,通过 cd 切换到自己的工作目录,创建一个项目 myweb
django-admin startproject myweb
可以看到,在目录下会多出一个文件夹 myweb,表示项目创建成功。
2.启动 Django 服务
cd 进入myweb 目录,现在在命令提示符中输入命令:
python manage.py runserver
现在,Web 服务器已经成功启动,打开浏览器,在地址栏中输入:http://127.0.0.1:8000/
“127.0.0.1” 是指本地主机,8000 是默认的服务端口,可修改。
OK 创建完成
3.创建 Django APP
建立一个叫 「myapp」 的应用,保持命令提示符在 myweb 目录下,
首先退出刚刚启动起来的 Web 服务器(注:Ctrl+C 可以退出服务器,Ctrl+Break也行),执行如下命令:
python manage.py startapp myapp
回车后, myweb 文件夹中多了一个 myapp 文件夹,这个就是我们刚创建的 APP
myapp 中为我们创建了相关的应用文件。
model
首先,需要写model,即你需要操作的数据。
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class message(models.Model):
username = models.CharField(max_length=1000)
password = models.CharField(max_length=1000)
settings.py中添加APP
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 在这里添加这一行代码
]
settings.py中修改:
DEBUG = True
ALLOWED_HOSTS = ['*']
使用默认database
若是想更换MySQL其他也可以,这里使用默认的数据库
创建数据库
请记住进行模型更改的三步指南:
- 更改模型 models.py。
- 运行以创建这些更改的迁移***python manage.py makemigrations***
- 运行以将这些更改应用于数据库。python manage.py migrate
如下:
python manage.py makemigrations
python manage.py migrate
views.py
from __future__ import unicode_literals
from myapp import models
from django.shortcuts import render
#插入函数
def insert(request):
if request.method == "POST":
username = request.POST.get("username", None)
password = request.POST.get("password", None)
twz = models.message.objects.create(username=username, password=password)
twz.save()
return render(request,'insert.html')
#定义展示函数
def list(request):
people_list = models.message.objects.all()
return render(request, 'show.html', {"people_list":people_list})
insert.html
在myapp目录下,建立templates文件夹,并在templates文件夹中建立insert.html,show.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>输入</title>
</head>
<body>
<h1>信息输入</h1>
<form action="/insert/" method="post"> {% csrf_token %}
<th>用户名字:</th>
<input type="text" name="username"/>
<br>
<th>病情描述:</th>
<input type="password" name="password"/>
<input type="submit" value="提交">
</form>
</body>
</html>
show.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>输出</title>
</head>
<body>
<h1>信息输出</h1>
<table>
<tr>
<th>用户名:</th>
<th>治疗方案:</th>
</tr>
{% for line in people_list %}
<tr>
<td>{{line.username}}</td>
<td>{{line.password}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
urls.py
from django.contrib import admin
from django.conf.urls import url
from myapp import views # 在这里添加这一行代码,导入 views
urlpatterns = [
url(r'^insert/$',views.insert),
url(r'^show/$',views.list),
url(r'^admin/', admin.site.urls),
]
运行结果
OK
总结
常用命令:
django-admin.py startproject myweb #创建项目
python manage.py startapp myapp #创建 app
python manage.py runserver #启动 Django 中的开发服务器
python manage.py -h #帮助文档
python manage.py <command> [options] #Django 命令
---------------------