基于Django的Blog(二)创建app

1.创建Article模块

(venv) E:\project\DjangoProject\dj_blog\my_blog>python manage.py startapp article

image-20200603222253635

刷新可以看到新出来一个文件夹

目录结构:

│  db.sqlite3
│  manage.py
│
├─article
│  │  admin.py
│  │  apps.py
│  │  models.py
│  │  tests.py
│  │  views.py
│  │  __init__.py
│  │
│  └─migrations
│        └─ __init__.py
│
└─my_blog
    │  settings.py
    │  urls.py
    │  wsgi.py
    └─ __init__.py

项目结构分解如下:

  • 根目录my_blog下有两个文件:db.sqlite3是一个轻量级的数据库文件,用来存储项目产生的数据,比如博客文章;manage.py是项目执行命令的入口,比如runserver。
  • 目录article是刚创建出来的app,用来放置博客文章相关的代码:后台管理文件admin.py,数据模型文件models.py,视图文件views.py,存放数据迁移文件的目录migrations
  • 根目录下还有一个my_blog目录,其中的settings.py包含项目的配置参数,urls.py则是项目的根路由文件。

目前你需要了解的就这么多,后面的章节都会用到。剩下还有一些没讲到的文件可以暂时不管它,碰到时再查资料。

2.注册App (settings.py)

需要修改项目配置未见,"告诉Django有article模块"

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 新增 'article'代码, 激活app
    'article',
]

3.配置访问路径(urls)

3.1 分配article路由my_blog/urls.py

from django.contrib import admin

# 引入include
from django.urls import path, include

# 存放映射关系的列表
urlpatterns = [
    path('admin/', admin.site.urls),

    # 配置app的url
    path('article/', include('article.urls', namespace='article')),
]

path为Django的路由语法:

  • 参数article/分配了app的访问路径
  • include将路径分发给下一步处理
  • namespace可以保证反查到唯一的url,即使不同的app使用了相同的url

记得在顶部引入include

在开发环境下,article的url为:http://127.0.0.1:8000/article/

现在我们已经给根路径为article的访问发了article,但是app通常有多个页面地址,因此app自己也还需要一个路由分发,也就是article.urls了

article可以有多个页面,如列表页面、详情页面等,那么就需要如下两个url:

http://127.0.0.1:8000/article/list/

http://127.0.0.1:8000/article/detail/

app 中的 urls.py 就是用来区分它们的。

在app生成时并没有这个文件,因此需要自己在article文件夹中创建urls.py

3.2 article的多页面路由

my_blog/article/urls

# 引入path
from django.urls import path

# 正在部署的应用名称
app_name = 'article'

urlpatterns = [
    # 目前还没有urls
]

posted on 2020-07-05 20:49  sunnywillow  阅读(57)  评论(0)    收藏  举报