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)的函数渲染出来。

猜你喜欢

转载自www.cnblogs.com/lzhshn/p/11368331.html