python web框架之Django随笔总结

一.Django中url多级路由总结
1.1 django中多级路由映射

django项目中如果一个项目内又分多个app,那么合理的结构是每一个app都应该有一层api路由,通过一级路由映射到当前app中。
django中所有路由的入口在与settting.py同级的urls.py下,所有applications接口接收到的请求首先会转发到此入口,然后根据此入口中的路由规则然后将url请求转发到对应的app下,再进行各自的app中urls.py进行应用转发
例如:一个项目的整体结构如下
python web框架之Django随笔总结_第1张图片
其中oa_project是所有路由的入口,所有api请求的url首先会根据路由规则进行一级路由匹配,例如本地服务中访问http://127.0.0.1:8000/user/login(注意仔细看路由映射)
首先application服务器会根据路由规则去入口oa_project/urls.py进行/user映射,urls.py路由规则如下:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', include('index.urls')),
    url(r'^game/', include('game.urls')),
    url(r'^user/', include('user.urls')),
    url(r'^management/', include('management.urls')),
    url(r'^address_book/', include('address_book.urls')),
    url(r'^report/', include('report.urls')),
    url(r'^notice/', include('notice.urls')),
    url(r'^department/', include('department.urls')),
    url(r'^timebook/', include('timebook.urls'))
]

我们可以注意到/user路由可以映射到当前的url(r’^user/’, include(‘user.urls’))下,然后include进行二级分发映射到对应的app应用下,去user这个应用下去进行对应的路由匹配,然后我们继续看user这个app下urls.py文件的路由规则
python web框架之Django随笔总结_第2张图片
路由通过user这个app映射到login下,然后进入视图函数中,这样一个完整的路由映射就从url请求通过application转发后django后台应用然后映射到对应的app,并进入对应app下的视图函数中。

1.2 Django中数据迁移

django中进行orm数据库映射时,通过执行makemigrations和migrate命令进行数据迁移,迁移过程通过ORM(对象关系映射)来实现数据库建表,orm中只需要在对应的app下的models中创建对应的模型然后通过模型对象直接操作数据库,此过程可以代替原始sql建表和执行sql
例如迁移user,department两个app下的model可以进行如下操作
python manage.py makemigrations user
python manage.py makemigrations department
python manage.py migrate
执行完后数据库中对用的用户和部门表就已经自动创建好

你可能感兴趣的:(django,django)