102-显示一个真正的页面
Posted lzhshn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了102-显示一个真正的页面相关的知识,希望对你有一定的参考价值。
1、首先我们要在FreeNote工程下,创建一个供我们学习的app,这有利于将学习代码和正式代码分开。
命令如下:
lzhshn@lzhshn-Ryzen:~/PycharmProjects/FreeNote$ python3 manage.py startapp test_app
回车后,将得到一个新的文件夹:test_app。里面包括很多文件:
lzhshn@lzhshn-Ryzen:~/PycharmProjects/FreeNote/test_app$ dir
admin.py apps.py __init__.py migrations models.py __pycache__ tests.py views.py
这里先不着急一一研究,我们只需要知道views.py即可,之后,将要在这里编写第一个用于显示网页的函数;
此外,在test_app文件夹下,还需要新增一个文件:test_urls.py,看这个命名,你大概就知道这应该是一个和当前test_app有关的一个设置urls的东西;
根据django的逻辑:由路径指向views函数,然后由views函数渲染出一个页面,上面这两步做完,准备工作就完成了。
2、找到/PycharmProjects/FreeNote/FreeNote下的urls.py,配置test_app的入口
from django.contrib import admin from django.urls import path from django.urls import include urlpatterns = [ path(‘admin/‘, admin.site.urls), path(‘test_app/‘, include(‘test_app.test_urls‘)), ]
这里面增加了include的引用,这个引用表示:如果在url中发现了test_app,则一定将test_app/后的内容去test_app下的test_urls里匹配,如果没有,则报错,如果匹配不到也报错。
也有把这种写法叫路由,这个可能更好理解。
3、设定一个views函数
from django.shortcuts import render from django.shortcuts import HttpResponse # Create your views here. def first_page(request): return HttpResponse(‘这是第一个页面。页面虽然简单,但是五脏俱全,已经涉及到了django的更多方面。‘)
HttpResponse是一种简单的网页返回方式,纯文本不带格式。这里我们只需要显示一个简单的网页,所以使用了这种模式,注意它的引入格式:from django.shortcuts import HttpResponse。
根据django的逻辑:用一个url指向views函数,然后函数再渲染页面。现在函数写好了,是不是写一个url指向它,然后输入到浏览器的地址栏就能看到了?
的确如此!但是我们要用到第2节里提到的路由。
4、设置test_app自己的urls
在test_app下新建一个文件:test_urls.py。很多教程中会直接把这个文件也命名为urls.py,但是为了和工程文件的主urls区分,个人不建议这么做。此外,新建这种文件,在pycharm里操作更方便,不建议直接去ubuntu的文件夹里新建。
from django.urls import path from . import views urlpatterns = [ path(‘first_page/‘, views.first_page, name=‘first_page‘), ]
这里和主urls一样,都要引入path,另外就是要引入本app下的views文件,由于是本app下,使用.来表示来源即可。
path的写法:
first_page的用意是:如果在地址栏输入了test_app/first_page,将定位到views.first_page;
views.first_page是函数def first_page(request),但是这里不要有括号;
最后是这个path的名称定义,其名称为first_page,在之后的模板中需要定位时,会经常用到name。
5、输入http://127.0.0.1:8000/test_app/first_page/,即可看到一个真正的我们自己写的网页,当然这还非常原始。
从地址可以看到:
http://127.0.0.1:8000/是这个FreeNote网站的最外层地址;
test_app/是这个网站下的一个app;
first_page/是app的一个页面,它通过一个叫def first_page(request)的函数渲染出来。
以上是关于102-显示一个真正的页面的主要内容,如果未能解决你的问题,请参考以下文章