DjangoORM笔记

一、创建django程序

  • 终端命令:django-admin startproject sitename
  • IDE创建Django程序时,本质上都是自动执行上述命令

其他常用命令:

  python manage.py runserver 0.0.0.0
  python manage.py startapp appname
  python manage.py syncdb
  python manage.py makemigrations
  python manage.py migrate

二、程序目录

三、配置文件

1、数据库

1

2

3

4

5

6

7

8

9

10

DATABASES = {

    'default': {

    'ENGINE''django.db.backends.mysql',

    'NAME':'dbname',

    'USER''root',

    'PASSWORD''xxx',

    'HOST': '',

    'PORT': '',

    }

}

+ View Code

2、模版

1

2

3

TEMPLATE_DIRS = (

        os.path.join(BASE_DIR,'templates'),

    )

3、静态文件

1

2

3

STATICFILES_DIRS = (

        os.path.join(BASE_DIR,'static'),

    )

路由系统

1、单一路由对应

1

url(r'^index$', views.index),

2、基于正则的路由

1

2

url(r'^index/(\d*)', views.index),

url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage),

3、添加额外的参数

1

url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}),

4、为路由映射设置名称

1

2

url(r'^home', views.home, name='h1'),

url(r'^index/(\d*)', views.index, name='h2'),

设置名称之后,可以在不同的地方调用,如:

  • 模板中使用生成URL     {% url 'h2' 2012 %}
  • 函数中使用生成URL     reverse('h2', args=(2012,))      路径:django.urls.reverse
  • Model中使用获取URL  自定义get_absolute_url() 方法

     View Code

获取请求匹配成功的URL信息:request.resolver_match

5、根据app对路由规则进行分类

1

url(r'^web/',include('web.urls')),

6、命名空间

a. project.urls.py

1

2

3

4

5

6

from django.conf.urls import url,include

urlpatterns = [

    url(r'^a/', include('app01.urls', namespace='author-polls')),

    url(r'^b/', include('app01.urls', namespace='publisher-polls')),

]

b. app01.urls.py

1

2

3

4

5

6

7

from django.conf.urls import url

from app01 import views

app_name = 'app01'

urlpatterns = [

    url(r'^(?P<pk>\d+)/$', views.detail, name='detail')

]

c. app01.views.py

1

2

3

def detail(request, pk):

    print(request.resolver_match)

    return HttpResponse(pk)

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

  • v = reverse('app01:detail', kwargs={'pk':11})
  • {% url 'app01:detail' pk=12 pp=99 %}

django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁。

通过反射机制,为django开发一套动态的路由系统Demo: 点击下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值