0

私は Django の初心者で、django HTML テンプレート/フォームに画像を表示する際に問題があります。実は表示できません。このスタックオーバーフローの質問/リンク - How do I include image files in Django templates? に記載されている解決策に既に従っています。

ただし、ブラウザでテストするたびに壊れた画像が表示される場合があります。以下は、私のアプリケーションに関連するファイルの内容の一部です (何が問題なのかを特定するのに非常に役立ちます)。

--- settings.py ---

# Media and images used by the templates
MEDIA_ROOT = '/home/acresearch/djangoProjects/fringe/fringe/images'
MEDIA_URL = 'http://localhost:8000/images/'

--- urls.py ---

urlpatterns = patterns('',
               (r'^submit/$', submit),
                       (r'^receipt/$', receipt),
                       (r'^images/(?P<path>.*)$', 'django.views.static.serve', {'document_root' : settings.MEDIA_ROOT}),

--- views.html ---

def submit(request):
    if request.method == 'POST':
        form = SubmitForm(request.POST, request.FILES)
        if form.is_valid():
            <omitted code related to handling file upload>
    else:
        form = SubmitForm()

    return render_to_response('submission_form.html', {'form' : form})

--- フォーム.py ---

class SubmitForm(forms.Form):
    email = forms.EmailField(required=True, label='Email address:')
    uploadedfile = forms.FileField(required=True, label='File to upload:')

--- submit_form.html ---

<body bgcolor="gray" >
    <h1>GRID PE-Classifier Submission Portal</h1>
    {% if form.errors %}
        <p style="color: red;">Please correct the error{{ form.errors|pluralize }} below. </p>
    {% endif %}

    <img src="{{ MEDIA_URL }}GRID_LOGO_rev4.jpg" />
    <form enctype="multipart/form-data" action="" method="post" >
        <div class="field">
                <table>
                    {{ form.email.label }}
                    {{ form.email }}
                </table>
                <em>{{ form.email.errors }}</em>
        </div>
        <div class="field">
                <table>
                    {{ form.uploadedfile.label }}
                    {{ form.uploadedfile }}
                </table>
                <em>{{ form.uploadedfile.errors }}</em>
        </div>
        <input type="submit" value="Submit">
    </form>
</body>

最後に、開発サーバーの応答を確認したところ、HTML テンプレート/フォームに画像として表示する必要がある JPG が、views.py の送信関数で GET パラメーターとして渡されていることがわかりました。下記参照:

Development server is running at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[24/Apr/2012 04:55:57] "GET /submit/ HTTP/1.1" 200 621
[24/Apr/2012 04:55:57] "GET /submit/GRID_LOGO_rev4.jpg HTTP/1.1" 404 2208

これで私を助けてくれることを願っています (これは私のプロジェクトの最後の行程であり、私はかなり立ち往生しているため)。また、Web ページを美しくするために Django で CSS と JS を使用することに関して、包括的ではあるがポイントへの直接的な参照をいくつか教えていただければ、それも素晴らしいことです。

前もって感謝します!

4

1 に答える 1

0

RequestContextテンプレートのレンダリングに を使用していないため、MEDIA_URLは渡されません。

于 2012-04-24T10:04:43.333 に答える