settings에서 templates 설정

5173 단어 djangotemplates
때때로 조그마한 문제라도 한참 동안 너를 괴롭힐 때가 있으니 정말 기초가 튼튼하지 못하다.django의 템플릿templates 경로 문제를 철저히 해결하기;일반적으로 어떤 템플릿을 찾을 수 없는지 알려 줍니다. 예를 들어 Template Does NotExist at/accounts/login/registration/login.html
프롬프트 Syntax Error: EOL while scanning string literal: 백슬래시 오류\아닙니다\
내 mysite 프로젝트의 전체 디렉토리:
C:\web\mysite>tree /F
  C      PATH   
      00000200 0007:9B9B
C:.
│  db.sqlite3
│  manage.py
│
├─blog
│  │  admin.py
│  │  admin.pyc
│  │  forms.py
│  │  forms.pyc
│  │  models.py
│  │  models.pyc
│  │  tests.py
│  │  urls.py
│  │  urls.pyc
│  │  views.py
│  │  views.pyc
│  │  __init__.py
│  │  __init__.pyc
│  │
│  ├─migrations
│  │      0001_initial.py
│  │      0001_initial.pyc
│  │      __init__.py
│  │      __init__.pyc
│  │
│  └─templates
│      └─blog
│              base.html
│              post_detail.html
│              post_draft_list.html
│              post_edit.html
│              post_list.html
│
├─mysite
│  │  lujing.py
│  │  settings.py
│  │  settings.pyc
│  │  urls.py
│  │  urls.pyc
│  │  wsgi.py
│  │  wsgi.pyc
│  │  __init__.py
│  │  __init__.pyc
│  │
│  └─templates
│      ├─mysite
│      │      base.html
│      │
│      └─registration
│              login.html
│
└─static
    └─css
            blog.css

templates 디렉터리는 일반적으로 app 아래에 기본적으로 있습니다. 제 예에서templates는 블로그 아래에 있습니다. 만약에 html이 있으면 자동으로 식별됩니다. 만약에 당신의templates 디렉터리가 이렇게 만들어진다면 mysite/mysite/settings를 사용할 필요가 없습니다.py에서templates 디렉터리가 어디에 있는지 설명하고django는 자동으로 찾을 것이다. 주로 APP 각각의templates 디렉터리에 APP의 특정한 템플릿을 저장한다. APP에 대응하는templates 디렉터리에 템플릿 파일 자체를 직접 저장하지 않고 이 디렉터리에 APP 이름으로 명명된 디렉터리를 만든다. mystite/bolg/templates/blog
하지만, 나는 굳이 평범한 길을 가지 않을 것이다. 나는templates를 어딘가에 세울 것이다. 어떡하지.
사용자 인증을 쓸 때 템플릿login이 필요합니다.html, 기본 디렉터리는 mysite/mysite/templates/login입니다.html, 두 번째 mysite 디렉터리는 app도 아니고, 당신의templates는 식별되지 않겠죠. 어떡해요. 우리는 mysite/mysite/settings에 있어요.py의 파일에서 이 templates 디렉터리가 어디에 있는지 사용자 정의합니다. 코드:
TEMPLATE_DIRS = ( 
    os.path.join(BASE_DIR, "mysite\\templates").replace('\\','/'),#    
   )

무슨 소리야,settings에서.py에 규정되어 있는데,
import os
BASE_DIR = os.path.dirname(os.path.dirname(file))
base_dir는 프로젝트 프로젝트의 디렉터리이고 프로젝트 디렉터리의 다음 단계는 응용 프로그램의 디렉터리입니다.
os.path.dirname(file):settings.py 파일이 있는 디렉토리: C:\web\mysite\mysite
os.path.dirname(os.path.dirname(file): 다시 한 번, 바로 C:\web\mysite\mysite의 상위 디렉터리입니다. 결과: C:\web\mysite, 즉 BASEDIR은 C:\web\mysite, 즉 프로젝트의 디렉토리입니다.
다음과 같이 설명합니다.
os.path.join(BASE_DIR, "mysite\\templates").replace('\\','/'),#\\  \

베이스를 교체하자dir
os.path.join(BASE_DIR, “mysite\templates”).replace(‘\’,’/’),
os.path.join(“C:\web\mysite”, “mysite\templates”).replace(‘\’,’/’),
우리는 보지 않는다.replace(‘\’,’/’),
결과:os.path.join(“C:\web\mysite”, “mysite\templates”)==C:\web\mysite\mysite\templates
이것은 문자의join과 다르기 때문에\mysite\templates가 아니라 mysite\templates로 써야 합니다.
r”C:\web\mysite\mysite\templates”.replace(‘\’,’/’)==’C:/web/mysite/mysite/templates’
그래서 앞에 있는 말은 다음과 같다.
TEMPLATE_DIRS = ( 
    r'C:/web/mysite/mysite/templates',
   )

좋은 웹페이지 즐겨찾기