当前位置: 首页 > 教程 > 博客搭建

Django个人博客搭建(2)-编写视图和URL

作者: admin 2019-08-24 12:07:16 阅读(355) 评论(0)

一. 视图简介

  • Django 基于 MTV模式,M为 model模型,T为 template模板,V为 view视图。
  • M模型层负责处理数据相关的业务和关系,T模板层处理页面数据的显示,V视图层接收处理请并处理业务逻。

  • 视图view的概念是一类具有相同功能和模板的网页的集合。每一个视图表现为一个 python函数,而 django将根据用户请求的 URL去寻找视图,也就是说每一个视图都与一个 URL相映射。

二. 编写一个简单视图

1. 编写视图

  • 接下来我们将编写一个视图,其功能为向浏览器返回"Hello Django!"。

  • 首先在front该App中的views.py中编写如下名称为artile_list的函数。

    from django.http import HttpResponse
    from django.shortcuts import render

    def article_list(request):
        return HttpResponse('Hello Django!')
  • 上述代码中,request为请求,JsonResponse是向浏览器返回对象,这个对象可以是字符串,数字,字典,元祖等 python数据类型。在这里向浏览器返回一个值为"Hello Django!"的字符串。

2. 注册url

  • 编写完视图函数之后,需要将其注册到urls.py中。

  • front下新建一个urls.py文件,将视图函数注册到其中,具体代码如下。

    from django.urls import path
    from front import views

    urlpatterns = [
        path('article_list', views.article_list, name='article_list'),
    ]
  • path函数有四个参数,route, view,kwargsname注意:route路由和view视图参数不可省略,其他可以省略

    第一个参数为路由参数,它会匹配一个URL,在这里匹配的是article_list

    第二个参数是视图参数,当Django根据请求URL匹配到了路由,它就会调用与此路由对应的视图函数。在这里将匹配views.article_list,即front/views.py中名称为article_list的视图函数。

    第三个参数是字典参数,可以将字典参数传递给视图,在本教程中不使用该参数。

    第四个参数是命名空间参数,可以为你的URL命名,这样可以通过这个name属性的名称在任意模板中调用该URL。

  • 由于只注册了front该App下的URLconfs,还需要将此URLconfs分发到总URLconfs(项目目录下的urls.py)中。

  • 修改rainbow_blog/urls.py文件,利用 include()函数,将front/urls.py分发到rainbow_blog/urls.py中,如下。

    include()的作用是当遇到此函数时,Django会截断与此项URL匹配的部分,将剩余的字符串和nclude()函数中包含的urls.py中的路由做进一步的匹配。

    from django.contrib import admin  
    from django.urls import path, include  

    urlpatterns = [  
        path('admin/', admin.site.urls),  
        path('front/', include('front.urls')),  
    ]  

3. 测试

  • 运行该Django项目,在项目根目录下输入命令行python manage.py runserver或者在Pycharm中点击绿色的运行按钮。

  • 在浏览器中输入http://127.0.0.1:8000/front/article_list访问,浏览器显示 Hello Django! 说明大功告成。

三. 搭建后台

1. 前言

  • 博客中有很多内容,例如文章、评论和标签等,这些都需要在网站后台进行管理。而Django自带了admin管理后台,功能十分强大。

    本教程将使用Django自带的后台,我在自己博客后台中没有使用django自带的后台系统,在这里是为了提高开发效率。

2. 美化admin

  • Django自带的后台管理系统不美观,这里利用第三方库simple-ui,一款基于element-ui+vue开发的后台主题对其进行美化。

  • 利用pip install django-simpleui命令行安装[simple-ui]

  • rainbow_blog/develop.py 中注册simpleui

    INSTALLED_APPS = [
      'simpleui',  # 注册simpleui
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      'article',
      'front',
    ]

3. 创建管理员账号

  • 管理员有权登录后台,对网站的数据进行管理,可以进行一些数据的增删改查,测试并维护网站的内容和稳定性。

  • 在项目根目录下输入命令行python manage.py createsuperuser,按要求输入用户名、密码和确定密码等即可。

4. 注册模型类至admin

  • 网站后台要对文章Article,标签Label,分类Category进行管理,所以需要将这三个模型类注册到admin中。
  • 修改article/admin.py文件,将模型类注册到admin中,如下。
    from django.contrib import admin

    # 导入模型类
    from article.models import Article, Category, Label

    # 注册
    admin.site.register(Article)
    admin.site.register(Category)
    admin.site.register(Label)

5. 测试

  • 运行Django项目,在浏览器中输入http://127.0.0.1:8000/admin访问。

  • 输入之前注册的管理员账号和密码,进入后台。

  • 发现界面都是英文,需要修改rainbow_blog/develop.py的语言选项,顺便修改时区为中国上海时区(防止读取数据库时间出错,Django默认时区是芝加哥时区)。

    LANGUAGE_CODE = 'zh-hans' # 修改语言
    TIME_ZONE = 'Asia/Shanghai' # 设置时区
    # USE_I18N = True
    # USE_L10N = True
    USE_TZ = False # 改为False
  • 刷新后台界面,界面文字切换成中文了。

  • 我们点击Article,发现下拉框恰好有我们之前注册的三个模型名称,分别为Article文章,Category分类和Label标签。

  • 点击Category,然后点击添加,进入添加页面,输入后台,然后保存。

  • 点击Label,然后点击添加,进入添加页面,输入django,选择Category,然后保存。

  • 点击Article,然后点击添加,进入添加页面,选择并输入信息,然后保存。

  • 在Pycharm中查看项目根目录下的sqlite数据库,进入文章表,发现文章已经添加成功。

这次主要讲述了如何编写视图,还有路由的配置以及在admin中添加文章? 。下篇博文将讲述如何定制admin和具体使用admin的技巧。若有错误或疏漏之处,小伙伴可以在下方留言。

0 条评论