找回密码
 注册
查看: 174|回复: 4

TemplateDoesNotExist at /hello/render/str/ 解决办法

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2025-4-6 19:33:18 | 显示全部楼层 |阅读模式
浏览器访问:
1 n  J7 D' n0 W* _! qhttp://127.0.0.1:5000/hello/render/str/8 W0 i5 |9 k2 P1 y
结果:0 Z' S) I/ p/ K/ u# x6 d8 l& a5 A
TemplateDoesNotExist at /hello/render/str/
* ]. {  M0 Y: lindex.html$ _2 p1 A- b' t' Q
Request Method:        GET
5 g8 N  N1 p# e! m9 fRequest URL:        http://127.0.0.1:5000/hello/render/str// Q" Q9 f5 |6 P& m
Django Version:        3.0.56 q2 j  O. K9 X& x! @* ^
Exception Type:        TemplateDoesNotExist
4 e: ~4 w/ _) K3 f# cException Value:       
2 M4 X6 A8 `9 a4 X  hindex.html
8 r' X# ?: q+ U# B6 jException Location:        C:\Users\long\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\loader.py in get_template, line 19
% B, x7 m+ M& UPython Executable:        C:\Users\long\AppData\Local\Programs\Python\Python38\python.exe
. i( V* \' `  J  J% v% wPython Version:        3.8.8% B7 x( |0 C" e: g& F0 _) O1 K
Python Path:       
. ]4 [/ {3 f! X1 }+ E" y7 W['C:\\Users\\long\\Desktop\\my_project',
# m8 u/ s% N9 }: T  E/ u 'C:\\Users\\long\\Desktop\\my_project',2 h+ e" m3 T, L  y
'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38\\python38.zip',3 ]5 X: }9 Y7 A- b/ H6 |
'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38\\DLLs',. n3 A: F; c/ u$ d) U
'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38\\lib',
+ b5 Z0 L' ?8 x- l 'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38',
% o' _: F4 L9 o2 p8 \ 'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages']' _# @2 U" Z) i7 R
Server time:        Sun, 6 Apr 2025 11:17:52 +0000( ^/ R0 ^. v9 Z7 R% J% Z; l# ~

  f% L' W/ ^6 T" d0 n提示来看,是因为找不到templates的文件。6 j  k( r* \9 S& T  [% _

5 P/ d0 c9 t( Z; q找了很久,也没有找到好的文档进行说明。最后抱着试试的态度,修改下项目目录下的setting.py中:7 c% h7 w; L9 }; Z9 M' G
TEMPLATES = [. h+ J8 i8 k+ b& p3 [1 |6 D
    {6 P8 \% `1 n' w
        'BACKEND': 'django.template.backends.django.DjangoTemplates',5 F/ l* v  O$ }4 X9 S
        'DIRS': ['templates'],
' s% F2 I4 e' }5 l# L        'APP_DIRS': True,
1 ~4 Z$ E& m% w" \* P7 t        'OPTIONS': {
) _0 N4 x# ^  ?$ L0 M" f            'context_processors': [
3 g6 }* A3 }& s6 W                'django.template.context_processors.debug',! ~) ?5 C! x6 Q& W+ x
                'django.template.context_processors.request',& f0 Z/ U, q. h( m
                'django.contrib.auth.context_processors.auth',
5 X; r: x5 E3 O# F, ]" A                'django.contrib.messages.context_processors.messages',' H' a' T4 H: r$ _
            ],
3 O2 u) k8 y, U( x& \% R        },
6 w/ t( i. q! M# c    },
. @. t/ G3 j; ]' a" G! x) }0 B]7 m  ?$ V' l: u/ g; c
改成我们项目的一些配置:如下修改:
! y% ^" U$ i1 A% L  q9 ]% F" nTEMPLATES = [: C8 b" q' m4 q7 q
    {$ J" }3 S# X0 u
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
$ u% f: E$ n2 M( I- E/ _  |% A4 K% u5 t        'DIRS': ['my_project/templates'],
1 u" y6 L  \, g( u9 C        'APP_DIRS': True,
; B: r3 U. V& K7 f7 ~' \# }        'OPTIONS': {3 r- j+ A# g4 V6 m: w3 ]
            'context_processors': [6 h% b7 O9 `2 M% R. L% `
                'django.template.context_processors.debug',1 u3 l0 F% F2 R* T8 ^
                'django.template.context_processors.request',
3 N  H9 ~. T* s" f; J                'django.contrib.auth.context_processors.auth',+ V/ H/ X: Y. |5 ^3 w, u2 s
                'django.contrib.messages.context_processors.messages',
: r+ S+ w  v' I1 v' I            ],  H; m0 e$ V5 f- r, Z, U0 n
        },
0 `" m& D+ @9 l* t    },
: ~9 y7 \; d: N8 I]7 [" y1 ^& ?$ p  M( l8 [, z
再重启manage.py 服务: python manage.py runserver 0.0.0.0:50001 M) i4 ^0 A; l, @& `! g/ g2 L1 b
再次访问,问题解决。http://127.0.0.1:5000/hello/render/str/返回结果:我的HTML标签# T5 }: ^& b: f2 s

  A1 i6 P: @& `! X8 b" V问题解决。
8 Q3 F4 G* @+ Q$ `# v% N. ?2 N" }) F# g; w' H9 a+ @8 ~# D
; h& L, T# k$ N% [+ U

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2025-4-6 19:36:32 | 显示全部楼层
有地方介绍可以使用这样的方式解决:
, z( K( f* c0 e) R# z# }# q9 N2 D修改setting.py的配置:
  G" @% g4 m. P5 f3 Z3 _) k. V' n* q( m1 ]7 B* ~- l* \8 i1 D6 S3 Q
TEMPLATES = [. s6 F) z2 }) D( Z
    {- I% f; w/ j( i( r) Z
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
6 _. {6 q# {$ ~! z- |        'DIRS': [os.path.join(BASE_DIR, 'templates')],
9 c! J( R' Q& `. w4 X        'APP_DIRS': True,3 ^! {' x8 w% Q  @% G
        'OPTIONS': {/ n+ Q4 W) z6 e+ \9 u; O
            # 其他选项...
4 [5 F5 E! ]6 g# W( I/ J        },
8 |& {( g  F: M% [5 x  F    },  o! W. Y) j) `& G6 K+ c
]
1 s2 ^! E9 [; @0 d* W9 v. L+ M' g) x0 A2 I
使用参数去获取目录:, F/ @+ S9 F5 ^: M2 @
os.path.join(BASE_DIR, 'templates')
5 |3 t! z6 v+ M  w% U+ U6 D
/ C' W1 A6 H& k; }# B4 j/ V$ @测试结果依然不能解决问题。% d# g& @( q, V( n" V% @, l9 w
还是楼上的问题。
3 N& n' o/ {6 r0 J0 a6 l0 ?
( f6 b- K  B3 G! ~最后抱着试试的态度,修改下项目目录下的setting.py中:
) K6 i. r  i' Y$ l9 x: zTEMPLATES = [
$ |7 w9 i0 g& S+ M, |    {
+ _, a# o$ T" _1 r: J        'BACKEND': 'django.template.backends.django.DjangoTemplates',( m" p+ H! _6 v6 x
        'DIRS': ['templates'],
# K# Q8 h- v- A. x  a        'APP_DIRS': True,4 {* N) b! z3 W+ S, O) t
        'OPTIONS': {
6 h) U! D, s4 X8 `            'context_processors': [; q7 H$ Q8 S% O1 c4 o" z5 B
                'django.template.context_processors.debug',% ?/ \' P3 ~2 k% e8 {+ \
                'django.template.context_processors.request',4 u* T1 ^+ q8 s
                'django.contrib.auth.context_processors.auth',# s6 f* \( D! `( ]" w! ^
                'django.contrib.messages.context_processors.messages',9 a4 X  c  G5 Q( n
            ],: O7 i3 S: \# S: A4 W
        },
  z5 n; o; S# [/ L    },
8 ]. K% q) W+ f]) l/ ]$ |7 [8 b9 ]5 d% n
改成我们项目的一些配置:如下修改:& G, y6 J. ]# V2 K
TEMPLATES = [
6 ]+ u4 q3 y2 E% H! M' e, c    {1 Z( M- Y" Q% B& T
        'BACKEND': 'django.template.backends.django.DjangoTemplates',9 Q! N) {+ H7 H5 |7 P  N
        'DIRS': ['my_project/templates'],5 ^7 [  b8 V+ h1 b0 C: L
        'APP_DIRS': True,
  ]- B0 [! C4 s/ a) W        'OPTIONS': {1 V: J$ a- @# F
            'context_processors': [
9 x) Q. U" ^, f. L                'django.template.context_processors.debug',
5 A: X! ?/ x9 `) _                'django.template.context_processors.request',
0 N; L0 L: ]( G  J' V$ H                'django.contrib.auth.context_processors.auth',' b; c: k/ a& q: J
                'django.contrib.messages.context_processors.messages',6 a( g9 R9 _0 I: }. W) t+ A
            ]," r: H4 n  s: B! j" ?& L
        },
' f. r* K! C- S3 [* W    },
. v7 w0 F' G: E6 V5 M" l. C7 k]
- r* c2 l' L" M& H) F/ W! j再重启manage.py 服务: python manage.py runserver 0.0.0.0:5000* a) d% g6 Q- c; I
再次访问,问题解决。http://127.0.0.1:5000/hello/render/str/返回结果:我的HTML标签
) Q9 e$ R/ N9 l( \. |+ ]" e# J3 e# R# U& z
问题解决。
  ]" {, n% c7 |1 B6 E! n' e" A; p- S8 I6 @5 {9 w$ j2 x2 _$ h
/ q8 ^6 v0 h4 s% m

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2025-4-6 19:37:19 | 显示全部楼层
使用绝对路径7 o% W& U& E0 j4 s9 A
在模板标签中,尝试使用绝对路径来加载模板,例如:
' s/ q/ J$ r; k   / s& e* x. ?/ U4 k: I1 d; u
{% extends 'app_name/template_name.html' %}
% }9 m& _% ]& Z2 A$ @2 i确保替换app_name和template_name.html为正确的值。

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2025-4-6 20:55:49 | 显示全部楼层
后来测试,还发现一个问题,这个地方配置其实是没有问题的,: N# Q+ |' N5 A! A% E9 A
TEMPLATES = [
; s" Q% }$ a. e2 d    {
' \* c& h# g1 e$ I; L, ~, r( p( H        'BACKEND': 'django.template.backends.django.DjangoTemplates',3 q& D; }7 c$ I6 B0 u
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
' U: I; [, |2 s  d8 i1 _        'APP_DIRS': True,; I5 R' M6 Y9 w* ^7 ]7 p
        'OPTIONS': {
6 B5 W8 h( Z% S            # 其他选项...$ [2 _* }2 c" X! x
        },
: H8 `: U( `9 B# [- T8 T" ^0 D    },
/ n+ S5 M: |4 W* ~8 u  X" F]8 h( t/ Y+ a& `+ Z+ K" S, c

6 p) c3 D3 |* G0 ]/ ?而是忽略了一个问题,需要把templates这个文件夹放在大根目录下。
( A& |  H: w+ r$ F

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2025-4-6 20:57:36 | 显示全部楼层
这样写:; L, I# K$ I- H' n
'DIRS': [os.path.join(BASE_DIR, 'templates')],
& x5 X7 |0 l1 w- q/ }$ V  A: ~或者这样写都可以  \9 \+ v' }! S  k* m5 _
  'DIRS': ['templates'],6 H; }3 k8 @- [2 J- _: d

, W% G2 z/ g8 D8 @会报错是因为没有注意到是否在根目录下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 00:12 , Processed in 0.021621 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表