django 路由系统,数据库操作

一、修改配置
数据库
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'dbname',
    'USER': 'root',
    'PASSWORD': 'xxx',
    'HOST': '',
    'PORT': '',
    }
}

# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
  
# 如下设置放置的与project同名的配置的 __init__.py文件,或settings 中, 目的就是执行一遍pymysql.install......
  
import pymysql
pymysql.install_as_MySQLdb() 

模版及静态文件:

TEMPLATE_DIRS = [
    os.path.join(BASE_DIR, 'templates'),
]

STATICFILES_DIRS = (
    (os.path.join(BASE_DIR, 'static'),
)
二、路由系统

- 单一路由对应: path('home/', views.index)
  • 内置正则路由:
    path('articles/<int: pid>/', views.article)
    article函数内:
    def article(request, *args, **kwargs):
      #kwargs 中存储了{'pid': 17}
      return render(request, 'aritcle.html')

  • 为路由映射设置名称
    path('home/', views.home, name='home'),
    path('article/int:pid', views.index, name='article'),
    设置名称之后,可以在不同的地方调用,如:
     
    模板中使用生成URL {% url 'home' 2017 %}
    函数中使用生成URL reverse('article', args=(2017,)) from django.urls import reverse
    Model中使用获取URL 自定义get_absolute_url() 方法

2.2 一二级路由分配

使用django.urls下的 include方法进行二级路由分配
一级路由:
project同名的urls.py文件内:

from django.urls import path
from django.urls import include

urlpatterns = [
    path('blog/', include('blog.urls')),
]

二级路由:
app下创建urls.py

from django.urls import path
from blog import views

urlpatterns = [
    path('index/', views.index),
]

name 参数与路由反解:
经常在视图函数中需要拿到前来的路由关系,除了:
request.path_info拿到全路径只为,
还能使用django.urls 下的 reverse(name)函数进行反解url
只需要在urls.py文件中的路由关系映射后面加上name参数,并给一个值,让reverse拿着这个值反解

#urls.py 内

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

#views.py文件内

from django.urls import reverse

def article(request):
    url_article = reverse('article')
    return render(request, 'article.html', {'url': url_article})

命名空间:

#project.urls.py

from django.conf.urls import url,include
 
urlpatterns = [
    path('a/', include('blog.urls', namespace='author-polls')),
    path('b/', include('blog.urls', namespace='publisher-polls')),
]

blog.urls.py

from django.conf.urls import path
from blogimport views
 
app_name = 'blog'
urlpatterns = [
    path('article/<int:pid>/$', views.detail, name='detail')
]

以上定义带命名空间的url之后,使用name生成URL时候,应该如下:

v = reverse('author-polls:detail', kwargs={'pid':11})
{% url 'publisher-polls:detail' pid=12 %}
posted @   G1733  阅读(311)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示