文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Django编写第一个应用视图

2024-12-03 07:01

关注

项目中创建应用

  1. (venv) apple:hello_django lifeng$ python manage.py startapp hello_apps 

 

编写第一个视图

在创建的应用中创建视图:

 

  1. from django.contrib import admin 
  2. from django.urls import path 
  3. from hello_apps import views 
  4.  
  5. urlpatterns = [ 
  6.     # admin这个是系统自带的 
  7.     path('admin/', admin.site.urls), 
  8.     path('hello/', views.hello), 

在urls中配置路径:

 

  1. def _path(route, view, kwargs=None, name=None, Pattern=None): 
  2.     if isinstance(view, (list, tuple)): 
  3.         # For include(...) processing. 
  4.         pattern = Pattern(route, is_endpoint=False
  5.         urlconf_module, app_name, namespace = view 
  6.         return URLResolver( 
  7.             pattern, 
  8.             urlconf_module, 
  9.             kwargs, 
  10.             app_name=app_name, 
  11.             namespace=namespace, 
  12.         ) 
  13.     elif callable(view): 
  14.         pattern = Pattern(route, name=name, is_endpoint=True
  15.         return URLPattern(pattern, view, kwargs, name
  16.     else
  17.         raise TypeError('view must be a callable or a list/tuple in the case of include().'
  18.  
  19.  
  20. path = partial(_path, Pattern=RoutePattern) 
  21. re_path = partial(_path, Pattern=RegexPattern) 

path中有五个参数,两个必传参数route、view;两个可传参数kwargs、name;Pattern默认值是None

Pattern默认值是None,体现在下面这段代码上:

  1. path = partial(_path, Pattern=RoutePattern) 

在这里就引入了一个高阶函数的概念,偏函数,举例子如下:

  1. print(int('11111', base=8)) 

把字符串转成8进制的整数类型,如遇到一次还可以这样操作,如遇到多个变量进行八进制的转换就每次都要写base=8,那如果是下面这样写会不会就舒服些呢?

设置固定默认值:

 

  1. def new_int(value, base=8):  
  2. return int(value, base) 

使用partial创建偏函数,简单理解就是固定住默认值,返回一个新的函数,从而能更简单地调用:

 

  1. from functools import partial  
  2. new_type = partial(int, base=8)  
  3. print(new_type('55555')) 

以上创建偏函数说的均是关键字传参,还有*args传参,您可自行百度搜索或可查看python官网文档。

官方文档地址:https://docs.python.org/zh-cn/3/library/functools.html

再返回观看Pattern所传的关键字是RoutePattern,而RoutePattern利用正则来专门查找url路径的等一系列方法。

path = partial() 就是创建一个偏函数,并返回一个新函数,新函数是保留原函数参数的,只是做了一个默认值绑定:

  1. path = partial(_path, Pattern=RoutePattern) 

有些时候可能你会有疑问,为什么有的会加include

 

  1. urlpatterns = [  
  2. path('hello/', include(hello.urls))  

官方描述:函数 include() 允许引用其它 URLconfs。每当 Django 遇到 :func:~django.urls.include 时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。

实际就是根据你传的值再一次确认,是不是符合django要求的url配置

使用前要注意引包操作,不然会报:NameError: name 'include' is not defined

  1. from django.conf.urls import include 

创建好应用后,启动项目:python manage.py runserver

 

  1. (venv) apple:hello_django lifeng$ python manage.py runserver 
  2. Watching for file changes with StatReloader 
  3. Performing system checks... 
  4.  
  5. System check identified no issues (0 silenced). 
  6.  
  7. You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. 
  8. Run 'python manage.py migrate' to apply them. 
  9. April 04, 2021 - 13:58:13 
  10. Django version 3.1.7, using settings 'hello_django.settings' 
  11. Starting development server at http://127.0.0.1:8000/ 
  12. Quit the server with CONTROL-C. 

访问

http://127.0.0.1:8000/hello/

成功进入第一个页面。

以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,评论区留言会及时修正发布,谢谢!

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯