【发布时间】:2020-05-30 00:15:24
【问题描述】:
我正在使用 JavaScript 和 Django 创建测验应用程序。实际上整个逻辑都是在 JavaScript 中完成的。对于测验应用程序,我有一个分数变量,我在 index.html 中显示分数变量值,如下所示:
resultCont.innerHTML = 'Your Score:- ' + score + '/80' ;
这里的 score 是 JavaScript 变量。
我需要将此分数变量存储到我的 DB 中。所以我需要使用 ajax 将 score 变量发布到我的 views.py 文件中,我的函数正在运行该文件,以便将分数和用户名一起提交给 Django 模型。
models.py:
class Results(models.Model):
username = models.CharField(max_length=50,default='')
score = models.IntegerField()
def __str__(self):
return self.username
这里我使用了 username 和 score 变量。而用户名就是外键。
views.py
def score(request):
if request.method == 'GET':
return render(request, 'quiz/html/end.html',{'form':Score()})
else:
try:
form = Score(data=request.POST)
newscore = form.save(commit=False)
newscore.owner = request.user
newscore.save()
return redirect('category')
except ValueError:
return render(request, 'quiz/html/end.html',{'form':Score(), 'error' :'please fill the form properly'})
end.html: 这里我使用了表单来提交分数以及 name 。我隐藏了用户名,以便用户无法更改名称。
<form method="POST">
{% csrf_token %}
<div>
<p style="display:none;">
<label for="id_username">Username:</label>
<input type="text" name="username" value={{user.username}} placeholder="{{user.username}}" maxlength="50" required="" id="id_username">
</p>
<p>
<label for="id_score">Score:</label>
<input type="number" name="score" placeholder ='' value='I want the score value here from javascsript' required="" id="id_score">
</p>
</div>
<button type="submit">Submit</button>
</form>
我编写了 ajax 发布请求,但我尝试在同一个 index.html 中显示分数。它正在显示,但我想要 end.html 中的分数值。是否可以将index.html的分数(分数存储在#result中)显示到end.html(分数需要存储的地方)
function scoresubmit(){
$.ajax({
url: '/',
method : 'POST',
// data: {score: $('#score').val(), "csrfmiddlewaretoken" : "{{csrf_token}}"},
success: function() {
$('#name').html(score);
}
});
}
index.html:(从这里)
resultCont.innerHTML = 'Your Score:- ' + score + '/80' ;
end.html:(到这里)
<input type="number" name="score" placeholder ='' value='I want the score value here from javascsript' required="" id="id_score">
urls.py:
path('home', views.home,name = "home"),
path('main',views.main, name='main'),
path('', views.score, name = "score"),
path('profile/',views.profile, name = "profile"),
path('category/',views.category, name = "category"),
我唯一想要的是将分数与用户名一起存储在我的数据库 (Django) 中。
我的 ajax 代码有什么问题。如何使用 ajax 发布请求将值从一个传递到另一个 html?
【问题讨论】:
-
您在视图中使用的 Score() 是另一个模型吗?
-
@ms394 No class Score(ModelForm): class Meta(): model = Results fields = ['username','quizname','score'] 我这里只用了forms.py文件
-
@ms394 你能告诉我如何将 Javascript 值传递给 djangi 模型吗?
-
@ms394 是存储数据的正确过程。如果你知道的话,请直接说出方式:-(伙计,我现在非常想要这个过程。只是方式或任何链接
-
如果数据保存在数据库中,您是否在管理员中验证过?
标签: javascript python html django ajax