Nep

纯粹是个人兴趣的表达

Django入门(2)-构建app&路由配置

什么是django app?

我的理解是,app代表了一个网站下的某一个功能模块。
例如,一个博客系统,可以有博文、评论、后台等模块。
这样,可以将一个复杂的系统拆解成多个模块,便于代码复用及提升可维护性。

app与project的区别:

  • 一个app实现某个功能,比如博客、简单的评论系统等;
  • 一个project是配置文件和多个app的集合,这些app组合成整个站点;
  • 一个project可以包含多个app
  • 一个app可以属于多个project

在django项目下创建app

  1. 打开命令行环境,切换到你的django项目目录。
  2. 如果你的项目使用的是虚拟环境(如virtualenv),别忘了先进入到你的虚拟环境。(如果是virtualenv,则在django项目目录下使用activate命令便可以启动虚拟环境。
  3. python manage.py startapp your_app_name,这里的you_app_name指你的app名称。我们以note为例,所以命令为python manage.py startapp note

如果你创建成功,那么项目结构大致是这样的:

《Django入门(2)-构建app&路由配置》

其中,note是你创建的app的名称。

在app下创建模版文件及编写视图

既然是一个网站,必然要用到html文件。django在这里称之为模版。在这里我们先演示下模版文件的使用。

在note目录下创建templates文件夹,再在templates文件夹下建立一个名为note的文件夹。为什么要这样做?原因是防止命名冲突。

在note文件夹新建note_index.html,填入以下内容:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>{{ note_title }}</title>
</head>
<body>
    {{ content }}
</body>
</html>

或许你还不懂其中{{ note_title }}{{ content }}的含义,我们先继续看下去。

在note文件夹下的view.py中编写以下代码:

from django.shortcuts import render_to_response
# Create your views here.
def note_index(request):
    context = {}
    context['note_title'] = 'this is a title.'
    context['content'] = 'Hallo world!'
    return render_to_response('note/note_index.html',context)

这样,我们便完成了视图到模版的数据传递,下面便是配置路由了!

配置路由

首先,我们需要一个urls.py,这个文件在创建你app的时候并没有自动生成,所以我们新建一个即可。在urls.py输入以下代码:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.note_index(), name='note_index'),
]

同时,我们还需要在你的项目根目录下的urls.py中添加代码,完成后的代码是这样:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('notes/', include('note.urls')),
    path('admin/', admin.site.urls),
]

注册app,运行项目

在编写完成后,我们需要在setting.py注册app。具体位置为:

INSTALLED_APPS中添加'note',

完成后是这样的:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'note',
]

这样便全部完成了,点击运行(绿色播放箭头)或者是python manage.py runserver,在浏览器的地址栏输入localhost:8000。这里弹出来一个404页面。为什么呢?因为我们修改了路由后,没有配置''路径所对应的路由文件。所以会提示404.

让我们在地址栏加上/notes/,回车加载一下看看。

《Django入门(2)-构建app&路由配置》

成功了!我们通过views.py将输入传入到模版文件,将生成数据后的html文件递交给浏览器的你。

总结

简单回顾一下。

app是一个项目中的一个模块,用于完成特定功能。

路由(通常是urls.py)捕捉用户的路径请求,交给相应的views.py

对应的views.py处理请求,产生数据来填充模版文件(templates),返回给用户相应的界面。

这样,你应该大致了解了django的工作流程。而且django中的MTV模式你也了解到了两个(V和T).下次会我们会了解MTV中的M.

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注