zoukankan      html  css  js  c++  java
  • 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 %}
    
  • 相关阅读:
    devexpress GridView按条件给行号上色
    简答正则表达式的使用
    devexpress 给GridView添加行号
    C# Winfrom 简单的运用Timer控件
    C# 简单TCP协议
    Lucene全文检索-从零开始(3)
    Lucene全文检索-从零开始(2)
    Lucene全文检索-从零开始(1)
    js 高级编程前三章
    莫名的胸闷
  • 原文地址:https://www.cnblogs.com/shiqi17/p/9610660.html
Copyright © 2011-2022 走看看