创建应用
上一篇 中已经说明了如何搭建 Django 项目,接下来讲解如何在 Django 中创建应用:
在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以生成应用的基础目录结构,这样就能专心写代码,而不是创建目录了。
项目 VS 应用
项目和应用有啥区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。类似于手机和 APP 的区别,一个手机可以下载很多个 APP ,一个APP可以在很多个手机上使用。
首先确保你在项目的根目录,也就是跟 manage.py 是同级的目录,然后输入以下命令
python manage.py startapp [你的应用名]
在这里我以 login 为例,创建一个登录应用:
可以看到项目中多了一个名字为 login 的包,并且里面已经有了一些模板文件
编写第一个视图
让我们开始创建第一个视图吧,打开 login/views.py,写入如下内容:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello Django! 马旭辉!")
这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它,所以我们需要用到 URLconf,要用到 URLconf 那么需要先在 login / 下面创建一个 urls.py 文件:
在 login / urls 中写入下面的代码:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index')
]
代码说明:
path中的 ‘ ’ 相当于是 Spring MVC中 @Controller("")的url。代表是访问路径。
views.index 代表我们在 views.py 中创建的index函数,name是起一个名字。
下一步是要在根 URLconf 文件中指定我们创建的 login.urls
模块。在 demo2/urls.py
文件的 urlpatterns
列表里添加一个path
,如图:
写入以下代码
from django.contrib import admin
# 先在这里引入一个 include
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
# 再到这里指定
path('login/', include('login.urls')),
]
当然如果你需要创建其他应用如支付、购物车等,按照以上步骤创建即可,然后在 根 URLconf 中添加即可.
接下来运行以下项目试试看是否将视图配置成功:
python manage.py runserver 8080
我这里采用的是 8080 端口进行启动的,
启动后我们访问 :http://127.0.0.1:8080/login
看到这个信息打印出来说明 视图配置成功了!
如果你打开以后是 404 那么你应该好好检查以下以确保你访问的是 http://127.0.0.1:8080/login 而不是 http://127.0.0.1:8080。
函数说明
函数 path()
具有四个参数,两个必须参数:route
和 view
,两个可选参数:kwargs
和 name
-
参数
route
route
是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从urlpatterns
的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。而且这些请求准则不会取匹配 get 和 post 的参数和签名,比如说 URLconf 在处理请求http://127.0.0.1:8080/hello/
时,它会尝试匹配hello/
。处理请求http://127.0.0.1:8080/getHomePage?page=1
时,也只会尝试匹配getHomePage/
。 -
参数
view
如果 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并且会传入一个 HttpRequest对象作为第一个参数。 -
参数
kwargs
任意个关键字参数可以作为一个字典传递给目标视图函数,暂时用不到这个参数。 -
参数
name
给我们的 URL 取个名字,能在 Django 的任意地方唯一地引用它,尤其是在模板中,只改一个文件就能全局地修改某个 URL 模式。
以上就是本篇全部内容了。// TODO 持续更新中。。。
关注微信公众号"程序员小辉"