谈谈Python之Django搭建企业级官网(第三篇上部)
2021-06-29 17:08
标签:匹配 博客 朋友 setting 注意 roc 兴趣 返回 内容 上一节的学前准备工作和第一个小牛试刀的Django项目学习,让我们对Django开发越来越感兴趣了。正所谓趁热打铁,让我们继续来学习网站开发必备的视图函数和URL映射等知识,跟着步伐一起学习,我相信你会收获很多。噔~噔,新闻播报时间:9月12-9月16有两个超强台风在广东湛江登陆,沿途影响众多城市,包括深圳!!所以很遗憾,前几天打算和舍友去深圳游玩的计划泡汤了,也只能推迟几天前往深圳度中秋、看月亮了~ 无论是使用命令行还是Pycharm创建Django项目工程,settings.py文件的DEBUG都默认设置为True,所以默认是开启了DEBUG模式。如下图所示: 我们在学习前先回顾下我们上一篇做了什么。上一篇我们首先在Pycharm创建了一个名为first_project的Django项目,然后在CMD使用命令创建了一个名为my_app的app应用。注意,上篇因测试需要修改了IP地址和端口号,所以这里我将项目的IP地址和端口号修改回127.0.0.1:8000,说明访问这个IP就可以访问我们的项目了。整体框架如下图所示: 视图其实就是视图函数,它一般都写在 app 的 views.py 文件中,也就是我们my_app包里的views.py文件。并且视图函数的第一个参数永远都是 request (一个HttpRequest)对象。这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等。在视图中,一般是完成逻辑相关的操作。比如这个请求是添加一篇博客,那么在视图函数可以通过request来接收到这些数据,然后存储到数据库中,最后再把函数执行的结果返回给浏览器。视图函数的返回结果必须是 HttpResponseBase 对象或者子类的对象。 上面视图函数返回的 HttpResponse("书籍列表!")只是单纯的在网页上输出"书籍列表!"文本内容。 视图函数写完后,我们怎么实现让用户在浏览器中输入一个URL就可以访问到我们刚才写的视图函数,即用户在浏览器一输入某URL,网页就显示"书籍列表!"文本内容。 URL映射原理:用户在浏览器输入了某个 URL ,请求到我们的网站的时候, django 会从项目的 urls.py 文件中寻找对应的视图。为什么会是在urls.py文件中寻找映射呢?这是因为在"settings.py"文件中配置了"ROT_URLCONF"为"urls.py"。在 urls.py 文件中有一个 urlpatterns 变量,以后 django 就会从这个变量中读取所有的匹配规则。匹配规则需要使用 django.urls.path 函数进行包裹,这个函数会根据传入的参数返回 URLPattern 或者是 URLResolver 的对象。 修改first_project项目的 urls.py 文件代码,示例代码如下: 运行first_project项目,在浏览器输入127.0.0.1:8000/book,访问成功!如下图所示(图片左下角显示了"书籍列表!"文本内容): 为URL传递参数有三种方式: 1.URL中添加参数 2.查询字符串传递参数 3.指定默认的参数前沿
DEBUG模式
开启DEBUG模式有以下好处:
1.我们可以发现,在Django开发时,频繁修改文件代码,然后要关闭项目,再重启项目才能测试我们修改的代码。但是如果开启了DEBUG模式,那么以后我们修改了Django项目的代码,然后按下了ctrl+s,那么Django就会自动的给我们重启项目,不需要手动关闭再重启。
2.如果开启了DEBUG模式,那么以后Django项目中的代码出现bug了,那么在浏览器和控制台会打印出错信息。
3.在实际将项目发布到网上给其他用户使用时,禁止开启DEBUG模式,因为前面说了入宫出现bug会在浏览器和控制台打印出错信息,这无疑把代码泄露在网上,会有很大的安全隐患。
4.如果DEBUG设置为False,那么必须设置ALLOWED_HOSTS。前一篇说过,如果将host设置为0.0.0.0,那么只能通过ALLOWED_HOSTS设置的IP地址进行访问该项目,也可以设置多个IP地址。ALLOWED_HOSTS字段如下图位置:URL分发器
视图
我们打开my_app的views.py文件,添加以下代码:from django.http import HttpResponse
# book_list是我们定义的一个视图函数,第一个参数必须是request对象,并且该函数返回必须是 HttpResponseBase 对象或者子类的对象。
def book_list(request):
return HttpResponse("书籍列表!")
URL映射
from django.contrib import admin
from django.urls import path
from my_app import views # 导入my_app包的views.py模块
urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘book/‘, views.book_list)
]
到了这里朋友们可能会好奇如果输入127.0.0.1:8000会怎么样?满足你的好奇心,结果如下:
我的天!我按照上一篇的流程可以访问的啊,怎么现在不彳亍了。其实当新添加了第一个URL映射之后需要注意的是主网页127.0.0.1:8000的网页404丢失了,这是因为如果刚开始创建的项目,若还未添加过URL映射,那么默认Django的底层提供一个就是那个火箭??页面来映射,但若添加了,那么就无法继续映射那个火箭??页面了,因为看urlpatterns变量其实都没有映射空URL,即127.0.0.1:8000为空URL。为URL传递参数
URL中添加参数
下一篇:Servlet和JSP
文章标题:谈谈Python之Django搭建企业级官网(第三篇上部)
文章链接:http://soscw.com/index.php/essay/99470.html