python3 django не может загрузить изображения imgur в html <img src ...>, если они еще не были открыты вручную - PullRequest
0 голосов
/ 16 сентября 2018

Я работаю над проектом в Python3 Django, Он проверит ваши знания по дорожным знакам в Словакии. Возникла проблема, когда я сохранил все 300 изображений на Imgur. Если я сначала открою только изображение со знаком, а затем изображение внутри моей HTML-страницы, все будет работать нормально, но мне нужно генерировать случайные изображения, чтобы я не знал, какое из них будет следующим. Консоль в Google Chrome выдает мне 403 код ошибки «Запрещено», также я вижу на вкладке «Сеть» инструментов разработчика, что она загружает изображение как txt/plain, что мне кажется подозрительным.

Можете ли вы мне чем-нибудь помочь, пожалуйста?

Вот мой HTML

{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 

'app_signs/style.css' %}">
</head>
<body class="question">
  <form action="/question" method = "post">{% csrf_token %}
    <div class="container">
      <br>
      <img src="{{ right_sign.signurl }}" class="main_sign" alt="FOTKA">
      <br>
      <h3>Aka je to znacka?</h3>
      {% for sign in list%}
        <p>{{ sign }}<p>
      {% endfor %}
    </div>
  </form>
</body>

Вот views.py

from django.http import HttpResponse
from django.template import loader
from django.views.decorators.http import require_http_methods
from django.shortcuts import redirect

from app_signs.models import sign

import random


@require_http_methods(["GET", "POST"])
def question(request):
    if request.method == 'GET':
        rndint1 = '{:03}'.format(random.randint(1, 386))
        rndint2 = '{:03}'.format(random.randint(1, 386))
        rndint3 = '{:03}'.format(random.randint(1, 386))
        rndint4 = '{:03}'.format(random.randint(1, 386))

        right_sign = sign.objects.get(sign_id=rndint1)
        fake_sign1 = sign.objects.get(sign_id=rndint2)
        fake_sign2 = sign.objects.get(sign_id=rndint3)
        fake_sign3 = sign.objects.get(sign_id=rndint4)

        list_sign = [right_sign.sign_name,
                     fake_sign1.sign_name,
                     fake_sign2.sign_name,
                     fake_sign3.sign_name]

        random.shuffle(list_sign, random.random)

        template = loader.get_template('app_signs/question.html')
        return HttpResponse(template.render({'right_sign': right_sign,
                                             'list': list_sign}, request))

А вот и модели

from django.db import models


class sign(models.Model):
    sign_category = models.CharField(max_length=250)
    sign_id = models.CharField(max_length=4)
    sign_name = models.CharField(max_length=250)
    sign_url = models.CharField(max_length=250)

    def __str__(self):
            return self.sign_name

1 Ответ

0 голосов
/ 17 сентября 2018

Я наконец нашел решение, это не было ничего с кодом Python.Трюк был в изменении 127.0.0.1 на localhost в URL.

...