django:静态网址无法正确呈现

时间:2013-03-27 19:40:34

标签: django django-forms

我的一个页面,静态网址无法正确呈现。例如:

<link href="//static/static/css/style.css" rel="stylesheet">

这是一个联系表格,这是视图:

def contact(request):

    Success = False
    email = ""
    title = ""
    text = ""

    if request.method == "POST":    
        contact_form = ContactForm(request.POST)

        if contact_form.is_valid():
            Success = True
            email = contact_form.cleaned_data['email']
            title = contact_form.cleaned_data['title']
            text = contact_form.cleaned_data['text']

    else:
        contact_form = ContactForm()

    ctx = {'contact_form':contact_form, 'email':email, 'title':title, 'text':text, 'success':success}

    return render_to_response('website/contact.html', ctx, context_instance=RequestContext(request))

模板:

{% if success %}
    <p>{{ email }}</p>
    <p>{{ title }}</p>
    <p>{{ text }}</p>

{% else %}

<form action"." method="POST">

{{ contact_form.as_p }}

<input type="submit" value="Send">
<input type="reset" value="Reset">

</form>
{% endif %}

所有其他页面正在加载,唯一的区别是此表单。有谁知道发生了什么事?

编辑:

呈现网址的模板代码为:

<link href="/{{ STATIC_URL }}static/css/bootstrap.css" rel="stylesheet">

以及相关的settings.py代码:

STATIC_ROOT = os.path.join(os.path.dirname(__file__), "static")

CURRENT_PATH = os.path.abspath(os.path.dirname(__file__).decode('utf-8')).replace('\\', '/')

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(CURRENT_PATH, '/static/'),
)

1 个答案:

答案 0 :(得分:0)

也许您需要删除重复的“静态”即:

<link href="{{ STATIC_URL }}/css/bootstrap.css" rel="stylesheet">

修改 您没有在您认为正在运行的视图上传递请求上下文。当您忽略传入请求上下文时,STATIC_URL是一个空字符串,因此您的链接将正确解析(即/static/css/boostrap.css),但是当您添加请求上下文时,STATIC_URL将替换为'/ static /'呈现不正确的网址。 简而言之,要解决此问题:1)使用上面的代码来引用bootstrap.css,2)在所有视图中包含请求上下文。

有关详细信息,请参阅request context docs