簡體   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