首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >维护静态文件

维护静态文件
EN

Stack Overflow用户
提问于 2017-03-27 17:37:29
回答 2查看 41关注 0票数 1

在django框架中,我收集表单中的用户输入,并创建matplotlib映像。此图像在html文件中标记字段中的按钮按下后显示。

在每个按钮按下此图像更新后,将进行更改并重新显示。这个效果很好。现在,我打算在第二个标签上介绍第二个图像,它在按下另一个按钮后会出现并发生变化。

我的问题是,在按下第二个按钮后,第一个图像消失了,在按下第一个按钮之后,第二个图像消失了。以下是html代码的一部分:

代码语言:javascript
复制
<form method=post action="">
    {% csrf_token %}
    <table>
        {% for field in form %}
        <tr>
            <td>{{ field.label }}</td>
            <td>{{ field }}</td>
        </tr>
        {% endfor %}
    </table>
    <br>
    <p><input type=submit name='button1' value='Create' class="btn btn-default"></form></p>
</form>

<p>
    {% if result != None %}
    {% load static %}
    <img src="{% get_static_prefix %}{{ result }}" width=1000>
    {% endif %}
</p>

<form method="post" class="topright">
    {{form3}}
    {% csrf_token %}
    <p><input type=submit name='button2' value='Update' class="btn btn-default" default=1></p>
</form>

<form method=post action="">
    {% csrf_token %}
    <table>
        {% for field in form4 %}
        <tr>
            <td>{{ field.label }}</td>
            <td>{{ field }}</td>
        </tr>
        {% endfor %}
    </table>
    <p><input type=submit name='button3' value='Predict' class="btn btn-default" default=1></p>
</form>

<p>
    {% if predictresult != None %}
    {% load static %}
    <img src="{% get_static_prefix %}{{ predictresult }}" width=1000>
    {% endif %}
</p>

图像文件通过: plt.savefig(plotfile)保存到静态文件夹中。大多数视图代码如下:

代码语言:javascript
复制
def bayes_create_and_update(request):
    #os.chdir(os.path.dirname(__file__))
    global bandit
    global invgammaresult
    global predictresult
    invgammaresult = None
    predictresult = None
    if request.method == 'POST' and 'button1' in request.POST:
        form = InputForm(request.POST)
        if form.is_valid():
            form2 = form.save(commit=False)
            bandit = gauss_bandit(form2.m, form2.s)
            invgammaresult=pull_and_update(bandit,1)
            invgammaresult=invgammaresult[7:]
            form3= Sample_InputForm()
            form4=Predict_InputForm()


    elif request.method == 'POST' and 'button2' in request.POST:
        form3 = Sample_InputForm(request.POST)
        if form3.is_valid():
            form2 = form3.save(commit=False)
            invgammaresult=pull_and_update(bandit,form2.n)
            invgammaresult=invgammaresult[7:]
            form = InputForm(request.POST)
            form4=Predict_InputForm()

    elif request.method == 'POST' and 'button3' in request.POST:
        form4 = Predict_InputForm(request.POST)
        if form4.is_valid():
            form2 = form4.save(commit=False)
            predictresult=bandit.predict(form2.p1,form2.p2)
            predictresult=predictresult[7:]
            form = InputForm(request.POST)
            form3= Sample_InputForm()
    else:
        form = InputForm()
        form3= Sample_InputForm()
        form4=Predict_InputForm

    return render ( request, 'C:/Users/Jan/PycharmProjects/Newversion/newattempt/online_comp/templates/bayes/bayes.html',
            {'form': form,
             'result': invgammaresult,
             'form3':form3,
             'form4':form4,
             'predictresult':predictresult
             })

我的模型产生了这个表单,是这样的代码:

代码语言:javascript
复制
from django.db import models
from django.forms import ModelForm


class Input(models.Model):
    m = models.FloatField(
        verbose_name=' Mean of the Normal Distribution:', default=0.0)
    s = models.FloatField(
        verbose_name=' Standard Deviation of the Normal Distribution:', default=1.0)

class InputForm(ModelForm):
    class Meta:
        model = Input
        fields='__all__'

class Sample_Input(models.Model):
    n = models.FloatField(
        verbose_name=' Number of samples you wish to draw:', default=1)

class Sample_InputForm(ModelForm):
    class Meta:
        model=Sample_Input
        fields='__all__'

class Predict_Input(models.Model):
    p1 = models.FloatField(
        verbose_name=' Lower bound', default=-1.0)
    p2 = models.FloatField(
        verbose_name=' Upper bound', default=1.0)

class Predict_InputForm(ModelForm):
    class Meta:
        model=Predict_Input
        fields='__all__'

Thx

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-29 20:36:02

我通过在静态文件夹中创建两个子目录和更改在计算文件中保存文件的路径(如上文所示)解决了这个问题。因此,这两个函数的图像输出不会相互干扰。

票数 0
EN

Stack Overflow用户

发布于 2017-03-27 18:36:52

我认为如果你把你的观点以及你要放进你的html中的表格的来源发布出来,那将是有帮助的。一种可能是您在视图中切换了request.POST信息,但需要查看。

小细节但表格method=post应该是表格method=“帖子”到处都对吧?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43053008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档