Джанго.Отображение страницы, включая текст и изображение PNG - PullRequest
0 голосов
/ 02 мая 2011

У меня проблемы с созданием django страницы, на которой отображается текст и изображение .png.

В пределах views.py прекрасно работает функция, описанная ниже

    def image_test(request):
        image_file = open("C:\\temp\\test.png",'rb').read()
        return HttpResponse(image_file,mimetype='image/png')

Теперь, если я попытаюсь создать HTML, который будет отображать как текст, так и изображение (как показано ниже)

    def test(request):
        html = "<html><body> Hi there.\n\n"
        html += "<img src = \"C:\\temp\\test.png\" type =image/png /> \n"
        html += "</body></html> \n"
        return HttpResponse(html)

тогда отображается только текст. Однако, если я сохраню сгенерированный HTML-файл в файл, как указано ниже

    <html><body> Hi there.
    <img src = "C:\temp\test.png" type =image/png /> 
    </body></html> 

и откройте его в браузере, затем он отобразит как текст, так и файл png.

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

С какой стати вы хотите сделать что-нибудь из этого? Вы не обслуживаете файлы изображений, читая их с диска и передавая их в HttpResponse - это чепуха. Вы обслуживаете файлы с помощью веб-сервера или static.serve Django только во время разработки. Вы не обращаетесь к файлам в сгенерированном HTML с помощью filepath на вашем локальном диске. И вы не создаете HTML путем объединения строк, вы используете полнофункциональный язык шаблонов Django.

1 голос
/ 02 мая 2011

На самом деле это не проблема Django. Когда вы открываете веб-страницу с внешнего сервера (т.е. не напрямую с жесткого диска, даже если сервер работает на вашем локальном компьютере), ваш браузер не позволяет ссылаться на файлы на вашем жестком диске.

Вам необходимо изменить URL-адрес изображений, чтобы он ссылался на URL-адрес сервера, а не жесткого диска.

Читайте о обслуживании статических файлов в Django и о с использованием шаблонов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...