Views视图----业务逻辑层学习
前面我们已经讲到了数据的存取层(Model),这篇我们将一下视图views的基础教程。
规划 URLs
简洁优雅的 URL 规划对于一个高质量 Web 应用来说至关重要。
- 首先在
iblog/urls.py
中,
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('article/', include(('article.urls', 'article'), namespace='article')),
]
上述代码将 URL 路径映射到了 Python 回调函数(“视图”)。路径字符串使用参数标签从URL中“捕获”相应值。
当用户请求页面时,Django 依次遍历路径,直至初次匹配到了请求的 URL。
(如果无匹配项,Django 会调用 404 视图。) 这个过程非常快,因为路径在加载时就编译成了正则表达式。
一旦有 URL 路径匹配成功,Django 会调用相应的视图函数。
每个视图函数会接受一个请求对象——包含请求元信息——以及在匹配式中获取的参数值。
函数 include() 允许引用其它 URLconfs。每当 Django 遇到 include() 时,
它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。
例如,当用户请求了这样的 URL “/articles/2019/11/123/”,
Django 会调用 news.views.article_detail(request, year=2019, month=11, pk=123)。
通俗说,这里面的大概意思是:
path表示路径,即
article
是路径的名字.
include(('article.urls', 'article')
表示在article
app下的urls中,我们需要在article下新建一个urls.py文件。
namespace='article'
命名空间,相当于给url起了个名字,用于反查url地址。和后面用到的name
一个意思。后面再说。
- 在
article/urls.py
中,写入:
from django.urls import path
from article import views
urlpatterns = [
path('hello/', views.hello, name='hello'),
]
- hello也是请求路径
path('hello/', views.hello, name='hello')
,
views.hello即当前请求路径执行views中的hello函数。
- 在
article/views.py
中新增一个函数hello
from django.http import HttpResponse
from django.shortcuts import render
def hello(request):
return HttpResponse('HelloWorld')
-
在控制台运行
python manage.py runserver
。 -
运行成功后,打开谷歌浏览器,输入
http://127.0.0.1:8000/article/hello/
即可看到我们的helloworld输出成功。
其中127.0.0.1:8000是调试服务器的本地地址,和java里的http://localhost:8000/
一样。
article是项目路由iblog\urls.py分发的地址,hello是刚才配置的article\urls.py应用分发的地址
别激动,有趣的知识才刚开始
Django自带的管理后台
- 管理界面不是为了网站的访问者,而是为管理者准备的。
- 首先,我们得创建一个能登录管理页面的用户。请运行下面的命令:
python manage.py createsuperuser
- 键入你想要使用的用户名,然后按下回车键:
(D:\Anaconda3\envs\iblog) D:\project\iblog_course\iblog>python manage.py createsuperuser
用户名: admin
电子邮件地址: 1943374299@qq.com
Password:
Password (again):
密码跟 用户名 太相似了。
密码长度太短。密码必须包含至少 8 个字符。
这个密码太常见了。
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
用户名和密码自己设置。
- 打开谷歌,输入
http://127.0.0.1:8000/admin/
我们看到了一个登录页面,输入刚刚注册的账号和密码就可以登录了。
我们登录进去后,可以看到一个这样的页面。
我们可能会发现,我们和别人的并不一样,是不是少了一个用户。
我们只需要做一件事:我们得告诉管理页面,Article
、UserProfile
对象需要被管理.
打开artcicle/admin.py
,输入
from django.contrib import admin
from article.models import Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
打开bloguser/admin.py
,输入
from django.contrib import admin
from bloguser.models import UserProfile
@admin.register(UserProfile)
class UserAdmin(admin.ModelAdmin):
页面就变为了
还感觉不好看,想美观一下?可以,很简单
打开bloguser/admin.py
# 修改网页title和站点header。
admin.site.site_header = "博客管理后台"
admin.site.site_title = '管理后台'
admin.site.index_title = '我的博客后台'
然后重新启动项目,是不是发现登陆页面和登录成功后的页面都发生了变化。(这里不再放截图)
要是还感觉不后舒服怎么办,还可以优化。
打开article
的app.py
from django.apps import AppConfig
class ArticleConfig(AppConfig):
name = 'article'
verbose_name = '文章管理'
然后再打开article/__init__.py
default_app_config = 'article.apps.ArticleConfig'
重新启动项目,然后进入后台,可以看到都变成了我自己命的名字,每个app都可以,bloguser的可以自己设置。