我的 Web 应用程序位于 django 中,每次用户按下“下一步”按钮时,它都会显示随机图像。我尝试存储名称或更好地存储与其名称相连的图像的编号。例如,如果名称是“image4.jpg”,那么我想将数字 4 存储为数字或文本。
所以,首先我在 models.py 文件中有一个类。
class Session(User):
image_number = models.IntegerField()
变量的类型可能是错误的,因为我不想从表单中获取它。我在views.py 文件中生成数字。所以,我只想存储它。
正如我所说,views.py 文件中有一个函数可以生成随机数。
def func_random(self):
random_im_list = random.sample(xrange(1,20),5)
return {1v: random_im_list[0],
2v: random_im_list[1],
... etc}
所以,这里我生成了一个包含 5 个数字的列表,因为我想在每个 session 中显示 5 个图像。用户按“下一步”按钮 5 次,每次他都可以看到一个新的随机图像。
我还在views.py 中为五个页面设置了五个类。
class Image1(Page):
class Image2(Page):
class Image3(Page):
class Image4(Page):
class Image5(Page):
这里我需要一些帮助,因为我不等待用户的任何输入。我已经生成了包含随机数的列表。那么,如何将它们存储在数据库中呢?第一个 session 后的数据库必须有 5 列,每列一个数字。
之后我就有了模板文件:
{% if Page == 1 %}
<div>
<im src="{{static_url}}images/image{{ 1v }}.jpg" />
<div>
{% elif Page == 2 %}
<div>
<im src="{{static_url}}images/image{{ 2v }}.jpg" />
<div>
etc....
对于您来说,拥有一个将图像编号作为参数的单一 View 可能更有意义。然后,您可以检查它是否是第一张图像,如果是,则生成随机图像列表供用户查看。另外,您应该考虑使用 Django sessions为了你想做的事。如果您使用 session ,您可以这样编写 View :
from django.shortcuts import render
def image_view(request, image_number): # image_number is from 1 to 5
if image_number == 1:
request.session['image_list'] = list(random.sample(xrange(1,20),5))
image = request.session['image_list'][image_number - 1]
return render(request, "yourtemplate.html", {"image_number": image_number, "image": image})
您的模板可能如下所示:
<div>
<img src="{{static_url}}images/image{{ image }}.jpg" />
</div>
在 URL 配置中,请确保像这样编写,以便您的 View 能够通过图像编号正确参数化:
urlpatterns = [
url(r'^images/([1-5])/$', views.image_view),
# ...
]
我是一名优秀的程序员,十分优秀!