软件版本:PyCharm Community Edition 2021.3.3
python版本:Python 3.9.7
一、下载Django
1、点击 File ---- Seetings
2、点击python Interpreter ----点击‘+’
3、查找Django,点击左下角 install package下载
二、创建Django项目
1、Settings--tools--Terminal 配置Shell path路径
2、打开cmd命令行,cd到你想要创建django项目的路径,然后输入命令: django-admin startproject djangoproject ,后面djangoproject 代表你的项目名。
django-admin startproject djangoproject .
注意:上面的命令最后的那个点,它表示在当前路径下创建项目。
3、用pycharm打开Djangoproject文件
4、点击View--Tool Windows--Terminal--打开Local
5、在Terminal运行代码:python manage.py runserver
6、点击打开 http://127.0.0.1:8000/,出现这个界面,表示Django项目已经搭建成功。
说明1:刚刚启动的是Django自带的用于开发和测试的服务器,它是一个用纯Python编写的轻量级Web服务器,但它并不是真正意义上的生产级别的服务器,千万不要将这个服务器用于和生产环境相关的任何地方。
说明2:用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍Python代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器。
说明3:可以通过python manage.py help
命令查看可用命令列表;在启动服务器时,也可以通过python manage.py runserver 1.2.3.4:5678
来指定将服务器运行于哪个IP地址和端口。
说明4:可以通过Ctrl+C来终止服务器的运行。
三、写一个简单的测试
1、创建名为books(图书管理系统)的应用,一个Django项目可以包含一个或多个应用。
输入命令:python manage.py startapp books
执行上面的命令会在当前路径下创建books目录,其目录结构如下所示:
__init__.py
:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。admin.py
:可以用来注册模型,用于在Django的管理界面管理模型。apps.py
:当前应用的配置文件。migrations
:存放与模型有关的数据库迁移信息。__init__.py
:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。
models.py
:存放应用的数据模型,即实体类及其之间的关系(MVC/MTV中的M)。tests.py
:包含测试应用各项功能的测试类和测试函数。views.py
:处理请求并返回响应的函数(MVC中的C,MTV中的V)。
2、修改应用目录下的视图文件views.py。
from io import StringIO
from django.http import HttpResponse
depts_list = [
{'num':2021011001,'name':'西游记','booktime':'2022-10-15'},
{'num':2021050214,'name':'三国演义','booktime':'2022-10-15'},
{'num':2022101456,'name':'爱丽丝梦游仙境','booktime':'2022-10-15'},
]
def books(request):
output = StringIO()
output.write('<html>\n')
output.write('<head>\n')
output.write('\t<meta charset="utf-8">\n')
output.write('\t<title>首页</title>')
output.write('</head>\n')
output.write('<body>\n')
output.write('\t<h1>图书信息</h1>\n')
output.write('\t<hr>\n')
output.write('\t<table>\n')
output.write('\t\t<tr>\n')
output.write('\t\t\t<th width=120>图书编号</th>\n')
output.write('\t\t\t<th width=180>图书名称</th>\n')
output.write('\t\t\t<th width=180>借阅时间</th>\n')
output.write('\t\t</tr>\n')
for dept in depts_list:
output.write('\t\t<tr>\n')
output.write(f'\t\t\t<td align=center>{dept["num"]}</td>\n')
output.write(f'\t\t\t<td align=center>{dept["name"]}</td>\n')
output.write(f'\t\t\t<td align=center>{dept["booktime"]}</td>\n')
output.write('\t\t</tr>\n')
output.write('\t</table>\n')
output.write('</body>\n')
output.write('</html>\n')
return HttpResponse(output.getvalue())
3、修改项目目录下的urls.py文件
from django.contrib import admin
from django.urls import path
from books import views
urlpatterns = [
path('admin/', admin.site.urls),
path('books/',views.books),
path('',views.books,name='books')
]
4、输入命令:python manage.py runservser
点击打开 http://127.0.0.1:8000/
四、使用视图模板
上面通过拼接HTML代码的方式生成动态视图的做法在实际开发中是无能接受的。为了解决这个问题,可以提前准备一个模板页,所谓模板页就是一个带占位符的HTML页面,将程序中获得的数据替换掉页面中的占位符时,一个动态页面就产生了。
用Django框架中template模块的Template类创建模板对象,通过模板对象的render方法实现对模板的渲染,在Django框架中还有一个名为render
的便捷函数可以来完成渲染模板的操作。
渲染就是用数据替换掉模板页中的占位符,这里的渲染称为后端渲染,即在服务器端完成页面的渲染再输出到浏览器中,这种做法的主要坏处是当并发访问量较大时,服务器会承受较大的负担。
1、先回到manage.py文件所在的目录创建名为templates文件夹,在文件夹里创建模板页index.html。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>图书信息</h1>
<table>
<tr>
<th>图书编号</th>
<th>图书名称</th>
<th>借阅时间</th>
</tr>
{% for dept in depts_list %}
<tr>
<td>{
{dept.num}}</td>
<td>{
{dept.name}}</td>
<td>{
{dept.booktime}}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
2、回到应用目录,修改views.py文件。
from django.shortcuts import render
depts_list = [
{'num':2021011001,'name':'西游记','booktime':'2022-10-15'},
{'num':2021050214,'name':'三国演义','booktime':'2022-10-15'},
{'num':2022101456,'name':'爱丽丝梦游仙境','booktime':'2022-10-15'},
]
def index(request):
return render(request,'index.html', {'depts_list':depts_list})
3、切换到项目目录修改settings.py文件,更改TEMPLATES = [ ]里面'DIRS’=[]中内容
'DIRS': [os.path.join(BASE_DIR, 'templates')],
4、重新运行项目或直接刷新页面查看结果。