前言
Django是一款开源Web框架,由Python编写,用了MTV的框架模式,即模型M(model),模板T(templates)和视图V(view)。其自带了sqlite3数据库也可以使用mysql数据库。如果你只希望简单实现web后端或者api接口可以使用Flask,Flask更为轻量且方便,但是如果你需要完整实现web后端及管理系统则Django是更好的选择。
安装Django(通过pip安装)
windows下在cmd中输入如下命令
pip install django
一、通过Pycharm创建Django应用
Pycharm必须为专业版,社区版自动创建Django项目需要通过命令创建
(1)创建Django项目
(2)创建app文件
注意:创建完成app文件后,我们会发现项目中多了一个文件夹即刚才创建的app文件。
Django重要文件详解:
__init__.py :python面向对象自带的初始化类不用管它。
settings.py:用于的应用进行设置,如配置数据库,是否开启Debug,配置静态文件路径,配置初始化应用等。
urls.py:设置网页访问路径,管理url的类。
wsgi.py:python代码块和Web服务器接口的配置文件。
admin.py:后端管理系统的实现类。
views.py:控制视图显示的类。
二、在settings.py文件的INSTALLED_APPS中添加所创建的app应用
三、在templates文件夹中新建一个html文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>hello world</title> </head> <body> <p>hello world</p> </body> </html>
四、在view.py中创建页面显示方法
from django.shortcuts import render # Create your views here. def hello(requset): return render(requset, "hello.html")
五、在urls.py中配置访问路径
from django.contrib import admin from django.conf.urls import include, url from myblog.views import * from django.conf import settings from django.conf.urls.static import static # 匹配网络地址 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', hello), ]
到此处我们的网页已经可以访问了
六、在models.py中为后端管理系统创建填写框
class Author(models.Model): name = models.CharField(max_length=100) age = models.IntegerField(default=18) class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() # url = models.URLField() # portal = models.ImageField() author = models.ForeignKey(Author, on_delete=models.DO_NOTHING) # 引入外键到Author
七、创建数据库(manage.py会根据models.py中的类帮我们创建数据库)
在managy.py控制台中执行makemigrations命令和migrate命令
八、为后端管理系统注册数据(在admin.py中添加如下代码)
from django.contrib import admin from myblog.models import * # Register your models here. admin.site.register(Article) admin.site.register(Author)
九、为后台管理系统创建用户
在managy.py控制台中执行createsuperuser,期间会让你输入用户名和密码,这也就是你进入后台管理系统的账户密码。(注意密码不能是纯数字否则会报错让你重新输入)
到此处我们的后台管理系统也就可以进入了,我们可以进入后台管理系统为我们的author和article添加一条数据。
十、到网上下载一个blog的html模板
将其html文件放入templates文件夹中,在根目录下创建一个static文件夹,将css文件,imge文件和jsp文件放入其中。替换掉views.py中显示的html。
(1)修改html的显示
from django.shortcuts import render from django.http import HttpResponse from blog.models import * # Create your views here. # def hello(request): # return HttpResponse("这是一个未完成的网站") def index(requset): articles = Article.objects.all() # 读取数据库中的所有文章 return render(requset, 'index.html', locals()) def article(requset, pid): article = Article.objects.get(id=pid) # 根据id读取数据库中的文章 return render(requset, 'article.html', locals())
(2)重新设置网页访问路径
from django.contrib import admin from django.conf.urls import include, url from blog.views import * from django.conf import settings from django.conf.urls.static import static # 匹配网络地址 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', index), url(r'^article/(\d+)', article) ]
十一、在这里如果你的css文件和图片还无法加载我们需要对static静态文件做处理
(1)在settings.py文件中添加
STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ]
(2)修改ulrs.py
from django.contrib import admin from django.conf.urls import include, url from myblog.views import * from django.conf import settings from django.conf.urls.static import static # 匹配网络地址 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^blog/', index), url(r'^article/(\d+)', article) ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
(3)在html的文件顶部加上{% load static %}表示加载动态文件(这是django自带语法),替换img和css的使用方法为如下代码
<link rel="stylesheet" href="{% static 'css/templatemo-style.css' %}"> <img src="{% static 'img/image-02.jpg' %}" alt="Image" class="img-fluid">
(4)关于django还有很多自带语法,可以去官网学习
十二、在html中引入数据
(1)修改view.py中的代码,local(),表示传输该方法中的所有属性
from django.shortcuts import render from django.http import HttpResponse from myblog.models import * # Create your views here. # def hello(request): # return HttpResponse("这是一个未完成的网站") def index(requset): articles = Article.objects.all() # 读取数据库中的所有文章 return render(requset, 'index.html', locals()) def article(requset, pid): article = Article.objects.get(id=pid) # 根据id读取数据库中的文章 return render(requset, 'article.html', locals())
(2)在html中使用属性{{}}表示引用属性
<h2 align="center" class="mb-4 tm-text-color-primary">{{ article.title }}</h2> <p>{{ article.content }}</p>
写在末尾
我们的博客也就搭建完成了,最后给大家展示一下效果,关于Django自带语法还是可以学习一下的,帮助我们更容易的在html中展示数据,不得不说django真的是一款很方便的后端开发框架。