Django学习笔记(2)--视图函数

用pycharm打开FDJ项目

URL分发器

视图:

视图一般都写在app的view,py中。并且视图的第一个参数永远都是request(一个HttpRequest)对象。这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等。在视图中,一般是完成逻辑相关的操作。比如这个请求使添加一篇博客,那么可以通过request来接收到这些数据,然后存储到数据库中,最后再把执行的结果返回给浏览器。视图函数的返回结果必须是httpResponse对象或者子类的对象。

实例:

创建book app:

(Django-env) python manage.py startapp book

在book app下的views.py中添加:

from django.http import HttpResponse
def book_list(request):
    return HttpResponse("书籍列表:")

URL映射:

回到FDJ目录下的urls.py中:

from book import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/', views.book),
]

打开浏览器输入http://127.0.0.1:8000/book/

扫描二维码关注公众号,回复: 6016553 查看本文章

补充:

视图函数的返回的对象必须为:

URL添加参数:

有时候,url中包含了一些参数需要动态调整。比如简书某篇文章的详情页的url,是https://www.jianshu.com/p/a5aab9c4978e后面的a5aab9c4978e就是这篇文章的id,那么简述的文章详情页面的url就可以写成https://www.jianshu.com/p/<id>,其中id就是文章的id,那么如何在django中实现这种需求呢。这时候我们就可以在path函数中,使用尖括号的形式来定义一个参数。比如我现在想要获取一本书籍的详细信息,那么应该在url中指定这个参数。示例代码如下:

在views.py中添加

def book_detil(request,book_id):
    #在数据库中根据id提取图书信息
    text = book_id
    return HttpResponse(text)

在urls.py中的urlpatterns中添加

path('book/detil/<book_id>/',views.book_detil),

然后在浏览器网址栏输入http://127.0.0.1:8000/book/1234

当然可以加更多参数,比如

path('book/detil/<book_id>/<categrary>',views.book_detil),

那么views.py中的book_detil必须改成:

def book_detil(request,book_id,categrary):
    #在数据库中根据id提取图书信息
    text = book_id
    #categrary....categrart的操作。。。
    return HttpResponse(text)

另一种url传参数的方式是字符串匹配:

在urls.py中的urlpatterns中添加

path('book/author',views.author_detil),

在views.py中添加

def author_detil(request):
    author_id = request.GET.get('id')
    text= author_id
    return HttpResponse(text)

在浏览器网址栏输入http://127.0.0.1:8000/book/author/?id=111

总结:

1.url映射:

  • 为什么会去urls.py文件中寻找映射呢?在'urls.py'中我们所有的映射,都应该放在‘urlpatterns’这个变量这个变量中。
    • 是因为在'settings.py'文件中配置了‘ROOT_URLCONF’为'urls.py'。所有django会去'urls.py'中寻找。
  • 所有的映射不是随便写的。而是使用'path'的第一个参数中,使用'<参数名>'

2.url传参数:

  • 采用在url中使用变量的方式:在path的第一个参数中,使用'<参数名>'的方式可以传递参数。然后在视图函数中也要写一个参数,视图函数中的参数必须和url中的参数名称保持一致,不然就找不到这个参数,另外,url中可以传毒多个参数。
  • 采用查询字符串的方式:在url中不需要单独的匹配查询字符串的部分。只需要在视图函数中使用'request.GET.get(参数名称)'的方式来获取。因为查询字符串使用的是'GET'请求,所以我们通过'request.GET'来获取参数。并且因为'GET'是一个类似于字典的数据类型,所有获取取值字典的方式都是一样的。

猜你喜欢

转载自www.cnblogs.com/LMIx/p/10771234.html
今日推荐