Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模板对于不同的URL呈现不同_Django_Templates - Fatal编程技术网

Django模板对于不同的URL呈现不同

Django模板对于不同的URL呈现不同,django,templates,Django,Templates,我在我的一个模板中使用静态URL,如果我使用一个URL,它会正常工作,如果我使用另一个URL,它会失败。在这两种情况下,使用完全相同的模板运行完全相同的视图 模板代码: <link href="{{ STATIC_URL }}css/form.css" type="text/css" rel="stylesheet" /> <!-- rest of page... --> 网址 以上是我的django站点的一个片段。如果通过“mydomain.com/”(站点索引)访问

我在我的一个模板中使用静态URL,如果我使用一个URL,它会正常工作,如果我使用另一个URL,它会失败。在这两种情况下,使用完全相同的模板运行完全相同的视图

模板代码:

<link href="{{ STATIC_URL }}css/form.css" type="text/css" rel="stylesheet" />
<!-- rest of page... -->
网址

以上是我的django站点的一个片段。如果通过“mydomain.com/”(站点索引)访问页面,静态URL将正确呈现,css文件链接正确。如果通过“mydomain.com/app/(app的索引)访问页面,静态URL将变为空白,因此没有css,但页面的其余部分将正确呈现


我的印象是,如果视图和模板是相同的,那么url应该是不相关的。我错过什么了吗?无论使用何种URL,我必须更改什么才能使静态URL正确呈现?

我发现很难相信
静态URL
会变成空白。这没有合理的理由,除非有问题的视图响应是在
STATIC\u URL
毫无价值的时候缓存的。如果使用视图或模板缓存,请确保删除缓存,或重新启动memcached(或其他)。如果您正在开发并使用
runserver
,请重新启动
runserver


另一种更可能的情况是,根据它何时起作用和何时不起作用,您的
静态URL
没有前缀
/
,即它只是
静态的/
。这将使链接指向主页上的CSS文件
/static/CSS/forms.CSS
(应该是这样),但另一页上的CSS文件将是
/app/static/CSS/forms.CSS
,这显然是不正确的。

我很难相信
静态URL
会变成空白。这没有合理的理由,除非有问题的视图响应是在
STATIC\u URL
毫无价值的时候缓存的。如果使用视图或模板缓存,请确保删除缓存,或重新启动memcached(或其他)。如果您正在开发并使用
runserver
,请重新启动
runserver


另一种更可能的情况是,根据它何时起作用和何时不起作用,您的
静态URL
没有前缀
/
,即它只是
静态的/
。这将使链接指向主页上的CSS文件
/static/CSS/forms.CSS
(应该是这样),但另一个页面上的CSS文件将是
/app/static/CSS/forms.CSS
,这显然是不正确的。

这里只是猜测,但可能是因为您没有在视图中传递
上下文对象。要解决这个问题,您需要执行以下操作:

from django.template import RequestContext

...

def myform(request):
    ...

    return render(request, 'template.html', {'form': form,}, context_instance=RequestContext(request))
否则,
STATIC\u URL
变量将不会传递到模板,并且如您所述为空。我还假设您的上下文处理器设置中已经有此设置:

django.core.context_processors.static

这里只是猜测,但可能是因为您没有在视图中传递
ContextObject
。要解决这个问题,您需要执行以下操作:

from django.template import RequestContext

...

def myform(request):
    ...

    return render(request, 'template.html', {'form': form,}, context_instance=RequestContext(request))
否则,
STATIC\u URL
变量将不会传递到模板,并且如您所述为空。我还假设您的上下文处理器设置中已经有此设置:

django.core.context_processors.static

我发现了错误。发生这种奇怪的行为是因为这是以前构建的django站点的副本。我忽略了app/urls.py中urlpatterns的第一个参数,代码指向的是旧版本。不幸的是,该代码位于同一个框中,并且位于python路径上。因此,这个错误没有引起异常,反而做了一些我没有预料到的事情

实际情况如下所示:

# site_copy urls.py
urlpatterns = patterns('',
    url(r'^$', 'site_copy.app.views.myform'),
    url(r'^app/', include('site_copy.app.urls'),
    #...
)

# site_copy/app urls.py
urlpatterns('site.app.views',
    url(r'^$', 'myform'),
    #...
)

谢谢大家的帮助。

我发现了错误。发生这种奇怪的行为是因为这是以前构建的django站点的副本。我忽略了app/urls.py中urlpatterns的第一个参数,代码指向的是旧版本。不幸的是,该代码位于同一个框中,并且位于python路径上。因此,这个错误没有引起异常,反而做了一些我没有预料到的事情

实际情况如下所示:

# site_copy urls.py
urlpatterns = patterns('',
    url(r'^$', 'site_copy.app.views.myform'),
    url(r'^app/', include('site_copy.app.urls'),
    #...
)

# site_copy/app urls.py
urlpatterns('site.app.views',
    url(r'^$', 'myform'),
    #...
)

谢谢大家的帮助。

我相信克里斯在他的第二段中已经把它钉在头上了。在浏览器中查看两个url的源代码,并查看该css文件输出的url。不幸的是,情况是前者<代码>静态URL
在应用程序URL中显示为空。html的来源如下:从“mydomain.com/”中,我得到:
,而从“mydomain.com/app/”中,我得到:
,其中我的静态URL设置为“/STATIC/”。我相信Chris在他的第二段中已经把它钉在了头上。在浏览器中查看两个url的源代码,并查看该css文件输出的url。不幸的是,情况是前者<代码>静态URL在应用程序URL中显示为空。html的源代码如下:从“mydomain.com/”中,我得到:
,而从“mydomain.com/app/”中,我得到:
,其中我的静态URL设置为“/STATIC/”。这两个文件的源代码输出的完整路径是什么?一个是
/static/css/form.css
,另一个是
css/form.css
?是的,这就是输出。在根目录下,我得到'/static/css/form.css',在应用程序中我得到'css/form.css',您是否尝试过Django调试工具栏,以帮助推断发生了什么?根据你提供的信息,我认为这不应该发生——也许有一些外部因素?在任何情况下,这都是非常有趣的,如果明天你没有找到任何东西,我将设置一个测试用例。这两个文件的源输出完整路径是什么?一个是
/static/css/form.css
,另一个是
css/form.css
?是的,这就是输出。在根目录下,我得到'/static/css/form.css',在应用程序中我得到'css/form.css',您是否尝试过Django调试工具栏,以帮助推断发生了什么?根据信息