易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 165|回复: 4
收起左侧

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

[复制链接]
发表于 2025-4-6 19:33:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
浏览器访问:
  i( S& W3 U6 H' t: p9 q  g4 Nhttp://127.0.0.1:5000/hello/render/str/+ {: x/ s( ], H7 p8 p1 W; l
结果:7 A" {8 G3 o* w* h
TemplateDoesNotExist at /hello/render/str/
+ ^+ N" ~: P! X9 Z: Aindex.html7 z6 [) j# v% z/ _1 \
Request Method:        GET
3 r2 E2 T0 Z$ e$ B. e" t" \3 e$ iRequest URL:        http://127.0.0.1:5000/hello/render/str/
9 F5 _, x1 o' `( U, V- vDjango Version:        3.0.5- Z: E7 }! l: J8 }; o
Exception Type:        TemplateDoesNotExist
5 l2 J, S- \' A0 u1 @Exception Value:          [# ^4 J. d& Q2 \# b* M
index.html+ l1 |, I" H1 ]. f
Exception Location:        C:\Users\long\AppData\Local\Programs\Python\Python38\lib\site-packages\django\template\loader.py in get_template, line 19
( g0 l( p- ^! c2 _$ _, RPython Executable:        C:\Users\long\AppData\Local\Programs\Python\Python38\python.exe
" j# [/ B( h5 t7 h# v: dPython Version:        3.8.8
, t' j7 H" \$ t) @- h7 t/ fPython Path:        . a( S& _5 G5 X! I! c3 J
['C:\\Users\\long\\Desktop\\my_project',- ^2 T$ \# V! L/ y: U
'C:\\Users\\long\\Desktop\\my_project',
' }; i8 {5 o  |2 x( n' L, _ 'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38\\python38.zip',, a* g9 h$ o# c+ ~! c, s& v
'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38\\DLLs',0 }* |: Z8 ?6 f! y, }" Z
'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38\\lib',
0 A* j, R8 F: v; J7 c 'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38',/ q% p+ I  E8 A7 P* A2 L
'C:\\Users\\long\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages']" ~" L% m5 q* Y: b* \
Server time:        Sun, 6 Apr 2025 11:17:52 +0000
7 ^5 S' R9 c/ R# }1 ]! H
' z, N, _2 U7 j3 t8 u' b& d$ F+ O1 ~提示来看,是因为找不到templates的文件。9 ?, U* T  W) N+ Q7 u3 B3 l

4 m* l: f: T! C& R  c找了很久,也没有找到好的文档进行说明。最后抱着试试的态度,修改下项目目录下的setting.py中:8 c& d2 i! Q' G* r. B" X
TEMPLATES = [% L/ ^  D9 g  J) u1 G8 c% e
    {" y0 x% r1 G5 m
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
$ N9 U0 Y5 M3 Q9 E' G        'DIRS': ['templates'],
" [6 j  ]2 h+ q* z9 }! Y& c        'APP_DIRS': True,3 b( I4 J+ n( O- ?5 x3 \: O6 Q" _) b
        'OPTIONS': {
# P$ a" b0 z- D- V$ \0 g            'context_processors': [5 n4 S( O; O% `; d9 s! Z3 c) L
                'django.template.context_processors.debug',4 A- ^6 B8 i; s% s
                'django.template.context_processors.request',; n; ~- z" O2 p. }
                'django.contrib.auth.context_processors.auth',; T# @9 i$ h- P7 a: ~* ^. ?+ q& j
                'django.contrib.messages.context_processors.messages',
0 q/ @* W2 t8 Z  \            ],
% c3 w) Q- W$ i+ p4 P        },
9 t3 o$ B; o$ ?+ h7 [    },
" I1 y* t* Z9 `6 z, y6 ~6 V]+ s0 G" R7 \  _7 p! ~6 P1 I, }
改成我们项目的一些配置:如下修改:
2 R* ^# l9 {4 ^6 uTEMPLATES = [  z+ O1 M6 Q6 `* X) x
    {; a* a$ f. z) o3 _% c
        'BACKEND': 'django.template.backends.django.DjangoTemplates',* g; D2 _9 ^0 z9 W/ q
        'DIRS': ['my_project/templates'],
2 o  Q9 F) V1 u        'APP_DIRS': True,
0 Y, ]- ^4 B- \: ]5 m* o4 V& g        'OPTIONS': {  S4 `" O7 |% a8 p% R
            'context_processors': [
& M) ]! k* ?% j" X* {( ^2 Z$ K                'django.template.context_processors.debug',: Q# b  r5 p% V- F1 K0 H, b
                'django.template.context_processors.request',
" X2 A' f2 x# s* X) ^' x" [2 w' K! O                'django.contrib.auth.context_processors.auth',
/ b" `; n: k# V9 g+ X6 h* B2 w                'django.contrib.messages.context_processors.messages',: E3 M9 g6 ]# l8 b% q0 v
            ],& |# P1 T1 R5 I7 Y+ @4 I
        },1 \+ E% [& o' F
    },% a3 n# ?  b! w1 j- L7 i
]
& c9 v/ v5 B3 G+ `; S再重启manage.py 服务: python manage.py runserver 0.0.0.0:5000- @1 C- J* C: i6 j, }
再次访问,问题解决。http://127.0.0.1:5000/hello/render/str/返回结果:我的HTML标签
" [: l" I9 h( ?6 c7 a2 B1 E0 }% a  c) Y5 C. R
问题解决。; ?, L0 c- ?: |$ b* v; Z

) B/ e& V& e) E, Q8 w5 b; n1 a% x% {
 楼主| 发表于 2025-4-6 19:36:32 | 显示全部楼层
有地方介绍可以使用这样的方式解决:6 g! z% T% C% H. k7 }2 w
修改setting.py的配置:% i: h! s/ q: R6 I# v- l

2 k' F# T* ^0 t4 lTEMPLATES = [
" b$ @+ n8 N1 s9 n% {    {
  T0 H. b8 V8 n! q, w        'BACKEND': 'django.template.backends.django.DjangoTemplates',
$ [5 a4 Q) ?: k% a( e7 k9 Y        'DIRS': [os.path.join(BASE_DIR, 'templates')],1 N, V  B$ J1 C6 P( P2 |  D
        'APP_DIRS': True,
8 h  j$ a6 z% r8 O        'OPTIONS': {
: m  j  Q" @7 Z% p+ I; W$ v) m$ |% h            # 其他选项...
' Q( a% d; ?% f8 \- m9 h        },
/ ?  b- U+ c; }% b    },
0 ]/ W6 c- E' {$ j' P]$ ?0 N5 k# r  S) U  f3 A& R0 @8 r

+ c6 W. I+ z7 k+ z使用参数去获取目录:  f7 }1 i3 _' @7 A0 s0 m  q
os.path.join(BASE_DIR, 'templates')
% t4 _' l5 q% A7 H7 J% H* E. E! w2 h5 i# i: @2 B
测试结果依然不能解决问题。
5 a) k$ g* X5 }4 Q. A7 m还是楼上的问题。 + a; V  k$ L+ j8 }
  J8 l- ]/ L' ?8 v2 Y/ I" a
最后抱着试试的态度,修改下项目目录下的setting.py中:, I( ?0 k+ H) c& _4 N
TEMPLATES = [
6 j, t- z5 B; C    {
4 Y2 \/ k3 l0 N( H        'BACKEND': 'django.template.backends.django.DjangoTemplates',
4 i6 p( E9 r4 J7 R* l. h% y        'DIRS': ['templates'],
4 n' T- Q, O. u* @" U; J" B/ p        'APP_DIRS': True,0 H: V, I  ?# t7 ]% h& Y
        'OPTIONS': {
7 r! L/ w, J: |4 R2 @' X            'context_processors': [
: J& S( ^  A( P- g6 i                'django.template.context_processors.debug',! X3 G  R1 [4 w' |0 a
                'django.template.context_processors.request',9 a1 ]7 g+ }1 z3 [: r( |) M2 v
                'django.contrib.auth.context_processors.auth',
4 ^! n( O9 \6 ^. l& `% p. `                'django.contrib.messages.context_processors.messages',
, u8 ^3 Y2 G6 F) c            ],( d- a- ?9 Y' S" f) S- T
        },
3 j% m2 {5 f2 O4 Y' }    },; C  o, M" u. ?+ R
]
4 N2 a: |: D  }3 ?改成我们项目的一些配置:如下修改:' z3 `( t2 R# v; U/ N2 }1 G
TEMPLATES = [3 b8 g" S) i/ h1 _  h+ Y: y
    {
  D- @1 ]+ I$ x6 V2 `( T        'BACKEND': 'django.template.backends.django.DjangoTemplates',
/ z( @" _9 g9 Z& t        'DIRS': ['my_project/templates'],* k' P! E3 o, ?" f( p) E5 R
        'APP_DIRS': True,
% g8 d+ A9 |' j+ {        'OPTIONS': {; U7 v) y2 H+ T' q& e
            'context_processors': [- l+ ~/ x0 O% g+ {
                'django.template.context_processors.debug',
- h3 j1 I7 k. H! b+ k5 W; t; N                'django.template.context_processors.request',) {7 G% \" \& @( X4 S) y
                'django.contrib.auth.context_processors.auth',% _4 I: L$ t4 s' t# M4 o+ ]
                'django.contrib.messages.context_processors.messages',
: T6 [* y6 A- }! W2 P0 `$ K7 o6 `. S: s            ],( l% v! V9 U8 [( f9 A/ F8 l
        },6 P7 [3 T5 ^" N4 c0 ?
    },4 Y8 w8 X; |6 @* d3 J) m" b. s" R+ ?
]
% y) X) f% t$ J8 D" h/ h6 o再重启manage.py 服务: python manage.py runserver 0.0.0.0:50000 W; d; D  l7 T# P% p5 d
再次访问,问题解决。http://127.0.0.1:5000/hello/render/str/返回结果:我的HTML标签# p( k2 A- B: e, `; h! c9 A6 X2 ^

& a7 S, l8 [; ]  y' t问题解决。3 L' A0 ?! U+ Y' A# E9 N1 g
6 V! f( D7 `6 U8 }8 m# n# z5 q
. I! P7 P, E$ H! t
 楼主| 发表于 2025-4-6 19:37:19 | 显示全部楼层
使用绝对路径$ {+ L; A2 @6 P
在模板标签中,尝试使用绝对路径来加载模板,例如:
5 f9 S/ \5 Z" N; R! p   
! f* E5 ^; X% n' H; O7 i3 I{% extends 'app_name/template_name.html' %}+ N! Y! c$ J$ U0 {
确保替换app_name和template_name.html为正确的值。
 楼主| 发表于 2025-4-6 20:55:49 | 显示全部楼层
后来测试,还发现一个问题,这个地方配置其实是没有问题的,
# _+ ^1 H7 r( H' d" G$ s7 pTEMPLATES = [
1 J5 i8 R- r0 ]: z3 L    {
; S; F0 B3 a9 D# @        'BACKEND': 'django.template.backends.django.DjangoTemplates',
7 ]5 I1 R; ~" t% r        'DIRS': [os.path.join(BASE_DIR, 'templates')],
& l1 `# I. d- V1 l        'APP_DIRS': True,$ y& e9 m$ ~# k: C! d
        'OPTIONS': {
+ ^; B9 p, i8 X% M, H$ y3 ^            # 其他选项...9 T7 c, s; t( v% [& N/ o* b. C
        },2 Z9 l5 ^6 m1 R
    },
2 m% \' _; n7 t6 e2 u]1 T( s' c+ u& p0 r

- D1 e! [. T+ o( {( ]而是忽略了一个问题,需要把templates这个文件夹放在大根目录下。6 V7 k4 O7 W$ E2 C" E1 ~
 楼主| 发表于 2025-4-6 20:57:36 | 显示全部楼层
这样写:# J) `3 Y4 x5 K
'DIRS': [os.path.join(BASE_DIR, 'templates')],8 z2 J0 t( N# ]$ }, ?. ^1 o
或者这样写都可以  Z" V% h/ B8 G3 w
  'DIRS': ['templates'],- N8 A3 |$ ^6 j6 ^% w0 Q
* E) T1 i# G* u2 ^1 R; c# j" V+ C
会报错是因为没有注意到是否在根目录下。
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:20 , Processed in 0.065915 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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