Django视图函数

时间:2018-03-16 06:32:51

标签: python django

我的应用的urls.py是:

from django.urls import path
from . import views

app_name = 'javascript'
urlpatterns = [
    path('create_table', views.create_table, name='create_table')

我的views.py是:

def create_table(request):
    if request.method == 'POST':
        row_data = "this is row data"
        context = {'row_data': row_data}
return render(request, 'javascript/create_table.html',context)

我的create_table.html是:

{% load static %}
<form action="" method="post">
    {% csrf_token %}
    <button id="create_table">Get data</button>
</form>
<div id="place_for_table"></div>
<script type="text/javascript">
    var row_data = "{{ row_data }}"
</script>
<script src="{% static 'javascript/scripts/create_table.js' %}"></script>

我的create_table.js是:

function create_table() {
    document.getElementById("place_for_table").innerHTML = row_data;
}
document.getElementById("create_table").onclick = function() {
    create_table()
}

我想要达到的目标是:当请求/create table URL时,只显示按钮。按下按钮时,row_data变量的值显示在按钮下方。

此时数据显示为眨眼,然后消失。

我想我在视图函数中没有正确区分POST和GET方法。此外,我的逻辑基于默认情况下使用GET方法请求URL的假设。但是,如果我在视图的开头放置print(request.method),则会打印POST。

此外,每当我第一次加载页面或刷新页面时,我都会收到Firefox警告:“要显示此页面,Firefox必须发送重复任何操作(例如搜索或订单确认)的信息。早些时候演出。“

我尝试的其他事情是使用基于类的视图和post并获取defs或将create_table的URL放在button formaction=标记中,但这没有帮助。

我很感激有关如何实现这一目标的任何建议。

1 个答案:

答案 0 :(得分:0)

问题可能是因为当您submitting表单时refreshes/reloads表示您的页面,即/create_table url,因为row_data resets

This 即使您没有明确地向表单内的按钮提供type="submit",也可以帮助您了解按钮提交的原因。

我们的目标是防止事件发生。可以使用return false侦听器中的简单onclick语句来完成此操作,如下所示:

 function create_table() {
        document.getElementById("place_for_table").innerHTML = row_data;
 }   
 document.getElementById("create_table").onclick = function(event) {
        create_table();
        return false;
 }