在我们创建django项目和启动服务web服务之前,我们先在项目中创建一个应用,开始我们的编写之旅。在项目中创建应用,首先切换到项目目录下,然后输入命令:pythonmanage.pystartapp项目名(自定义名称)最后按回车键就创建成功了(venv)apple:hello_djangolifeng$pythonmanage。pystartapphello_apps在创建的应用中Createaview中写入第一个视图:fromdjango.contribimportadminfromdjango.urlsimportpathfromhello_appsimportviewsurlpatterns=[#admin这是系统自带的路径('admin/',admin.site.urls),path('hello/',views.hello),]inConfigurationpathinurls:def_path(route,view,kwargs=None,name=None,Pattern=None):ifisinstance(view,(list,tuple)):#Forinclude(...)processing。pattern=Pattern(route,is_endpoint=False)urlconf_module,app_name,namespace=view返回URLResolver(pattern,urlconf_module,kwargs,app_name=app_name,namespace=namespace,)elifcallable(view):pattern=Pattern(route,name=name,is_endpoint=True)returnURLPattern(pattern,view,kwargs,name)else:raiseTypeError('viewmustbeacallableoralist/tupleinthecaseofinclude().')path=partial(_path,Pattern=RoutePattern)re_path=partial(_path,Pattern=RegexPattern)path中有五个参数,其中两个必须传递参数route,view;两个可传递的参数kwargs,名称;Pattern的默认值为Noneroute:路由,即配置url路径,view:视图函数,用于执行匹配正则的url请求kwargs:任意多个关键字参数,可作为字典传递给目标视图函数名:alias,用于为url路径取一个别名Pattern的默认值为None,具体体现在下面的代码中:path=partial(_path,Pattern=RoutePattern)这里引入了一个高阶函数的概念,偏函数,例如:print(int('11111',base=8))将字符串转换为八进制整数类型。如果你遇到一次,你可以再做一次。如果遇到多个变量进行八进制转换,每次都要写base=8。如果是,写下面会不会更舒服?设置一个固定的默认值:defnew_int(value,base=8):returnint(value,base)使用partial创建偏函数。简单的理解就是固定默认值,返回一个新的函数,这样调用起来更简单:fromfunctoolsimportpartialnew_type=partial(int,base=8)print(new_type('55555'))上面创建偏函数就是所有关于关键字参数传递,和*args参数传递,可以自己百度搜索或者可以查看python官网文档官方文档地址:https://docs.python.org/zh-cn/3/library/functools.html然后返回看Pattern传递的关键字是RoutePattern,RoutePattern使用常规的一系列方法专门寻找url路径。path=partial()就是创建一个偏函数,返回一个新的函数。新的函数保留了原函数的参数,只是做了一个默认值绑定:path=partial(_path,Pattern=RoutePattern)有时候你可能会疑惑,为什么有的要加上includeurlpatterns=[path('hello/',include(hello.urls))]官方描述:函数include()允许引用其他URLconf。每当Django遇到:func:~django.urls.include时,它??会截断与该条目匹配的URL部分,并将剩余的字符串发送到URLconf以进行进一步处理。其实就是根据你传递的值再次确认,是否符合django要求的url配置。使用前注意包导入操作,否则会报:NameError:name'include'isnotdefinedfromdjango.conf.urlsimportinclude创建应用后,启动项目项目:pythonmanage.pyrunserver(venv)apple:hello_djangolifeng$pythonmanage.pyrunserverWatchingforfilechangeswithStatReloaderPerformingsystemchecks...Systemcheckidentifiednoissues(0silenced).Youhave18unappliedmigration(s).Yourprojectmaynotworkproperlyuntilyouapplythemigrationsforapp(s):admin,auth,contenttypes,sessions.Run'pythonmanage.pymigrate'toapplythem.April04,2021-13:58:13Djangoversion3.1.7,使用settings'hello_django.settings'启动开发服务器在http://127.0.0.1:8000/QuittheserverwithCONTROL-C。访问http://127.0.0.1:8000/hello/成功进入第一页。以上总结可能对你有帮助也可能没有帮助,但还是希望对你有所帮助。有什么问题或者不明白的,欢迎在评论区留言,及时发表。谢谢你!
