Django搭建Web应用

前言

    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静态文件做处理

django官网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真的是一款很方便的后端开发框架。

源码地址


猜你喜欢

转载自blog.csdn.net/qq_38520096/article/details/80772668
今日推荐