繁体   English   中英

Django:如何将在随机函数中生成的变量存储在数据库中?

[英]Django: How can I store in database a variable which I generate in a random function?

我的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个数字的列表,因为我想在每个会话中显示5张图像。 用户按下5次“下一步”按钮,每次他看到新的随机图像。

我还在views.py中有五个页面的五个类。

class Image1(Page):

class Image2(Page):

class Image3(Page):

class Image4(Page):

class Image5(Page):

在这里我需要一些帮助,因为我不等待用户的任何输入。 我已经用随机数生成了列表。 那么,如何将它们存储在数据库中? 第一次会话后的数据库必须有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....

对于您来说,拥有一个以图像编号作为参数的单一视图可能更有意义。 然后,您可以检查它是否是第一张图像,如果是,则生成随机图像列表供用户查看。 另外,您应该考虑将Django会话用于您要执行的操作。 如果使用会话,则可以这样编写视图:

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配置中,确保像这样编写它,以便通过图像编号正确地设定视图:

urlpatterns = [
    url(r'^images/([1-5])/$', views.image_view),
    # ...
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM