web开发学习(6) - Django的使用和配置问题

本文深入讲解Django框架的数据库配置、URL与模板路径设定、Model-View-Template交互原理及自定义模板存放策略,助您掌握Django核心概念。

记录一些Django基础和使用中遇到的问题:

参考:《Django文档》

目录:

1. 数据库的连接配置:

2. url的配置以及搜索路径

3. Template的配置以及搜索路径

4. Model-View-Template三者之间的交互

---------------------------------------------------------------------------------------------------------------------------------------------------------

1. 数据库的连接配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'my_blog',  # 数据库名字(需要先创建)
        'USER': 'my_blog',  # 登录用户名
        'PASSWORD': 'myblog123',  # 密码
        'HOST': 'localhost',  # 数据库IP地址,留空默认为localhost   我把‘’改为'localhost'就可以,不知为啥
        'PORT': '5432',  # 端口
    }
}

2. url的配置以及搜索路径

my_web
      --ll_env
      --my_blog (项目文件夹)
          --myapp
              --urls.py
              --views.py
              --model.py
              --setting.py
              --admin.py              
          --my_blog 
               --settings.py   (主配置文件)
               --urls.py       (第一级url设置,对应http://localhost:8000)  
          --manage.py

举例说明,当请求网址localhost:8000/my_blog/myapp/时,Django首先加载settings.py配置文件中,找到ROOT_URLCONF

ROOT_URLCONF = 'my_blog.urls'   #进行url匹配开始的地方

但是我的文夹目录中有多个my_blog目录,具体指的是哪个my_blog目录下的urls.py文夹呢,这就要看BASE_URLCONF,它设置了默认的路径开始的位置(根目录),后面的view视图和template模板有用路径的也是默认从这里开始(如果没有特殊设置)在上面的root_urlconf路径基础上自动加上BASE_DIR路径:/my_web/my_blog/my_blog/urls.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #例子中项目文件夹,也就是manage.py所在的文件夹

Djiango将把网址请求:‘my_blog/myapp/’  和 root_urlconf所指定的urls.py文夹中的urlpatterns进行匹配,如果匹配到路径,则进入到my_blog这个app下,找到下一级的urls.py文夹,并将原来的请求中的'my_blog'去掉,剩下'myapp/'用它来和当前urls.py文件中的urlpatterns进行匹配,并执行对应的视图函数。。。

3. Template的配置以及搜索路径

在settings.py文件中,还有一个是对TEMPLATES参数设定,该参数决定了视图函数去哪里可以找到对应的模板template

可以采用Django的默认设置,也可以自定义模板的存放位置,先看下view如果指定模板:

from django.shortcuts import render

# Create your views here.

def home(request):
    return render(request,'home.html')    #在TEMPLATE配置基础上,再确定模板所在位置

默认设置:'DIRS' : []      (该选项为空)

django将默认的查找每个已注册的app目录下的子目录,确认是否存在该模板,django建议的目录格式:myapp/template/myapp/home.html,这样,所有的模板文件(.html)将分散在每个app的子目录下

自定义设置:'DIRS': [os.path.join(BASE_DIR, 'templates')]

在根目录下,另外新建一个templates目录,并将该目录指定为template的搜索路径,后续所有的模板文件都放在这里面

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

3. 创建Model的步骤

  • 创建模板文件
  • 创建迁移文件,相当于创建了一个可以操作的数据库的脚本,但还没运行,存放在本地(每个app下面的migrations文件中)
python manage.py makemigration app_name
  • 正式执行数据库迁移操作(各种SQL语句)
python manage.py migration
  • 在admin.py文件中注册这个model,这样在http://localhost:8000/admin这个站点上才能看到你定义的这个model

4. Model-View-Template三者之间的交互

用户输入特定网址或者点击某个超链接,想要访问某个Model。在输入的网址中或者template中的定义的超链接中包含了Model的相关信息,urls.py文件通过urlpatterns匹配过程中,获得的这个信息,或者可以理解为urlpatterns定义了某个变量(名字随意)来接收这个信息。这个信息将被view视图函数获取,并对相关的Model进行处理后,指定呈现的template模板(利用view提供的数据,决定如何呈现数据),返回给客户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值