python3 如果尚未手动打开,django 无法将 imgur 图像加载到 html <img src...>
python3 django cant load imgur images to html <img src...> if havent been open already manually
我正在做一个项目 python3 Django,
它将根据斯洛伐克的路标测试您的知识。
当我在 Imgur 上存储所有 300 个标志图像时出现问题。
如果我首先打开带有标志的图像,而不是 HTML 页面内的图像,一切正常,但我需要生成随机图像,所以我不知道下一张是哪一张。 google chrome 中的控制台给我 403 错误代码 'forbidden' 我也可以在开发人员工具的网络选项卡中看到它将图像加载为 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
我终于找到了解决方案,python 代码没有任何问题。技巧是在 url.
中将 127.0.0.1
更改为 localhost
我正在做一个项目 python3 Django,
它将根据斯洛伐克的路标测试您的知识。
当我在 Imgur 上存储所有 300 个标志图像时出现问题。
如果我首先打开带有标志的图像,而不是 HTML 页面内的图像,一切正常,但我需要生成随机图像,所以我不知道下一张是哪一张。 google chrome 中的控制台给我 403 错误代码 'forbidden' 我也可以在开发人员工具的网络选项卡中看到它将图像加载为 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
我终于找到了解决方案,python 代码没有任何问题。技巧是在 url.
中将127.0.0.1
更改为 localhost