![](/img/trans.png)
[英]How to pass value from one html page to another in JavaScript?
[英]How to pass the javascript variable value from one html page to the another html page?
我正在使用 JavaScript 和 Django 創建測驗應用程序。 實際上整個邏輯都是在 JavaScript 中完成的。 對於測驗應用程序,我有一個分數變量,我在索引中顯示分數變量值。html 如下所示:
resultCont.innerHTML = 'Your Score:- ' + score + '/80' ;
這里的分數是 JavaScript 變量。
另一件事我需要將此分數變量存儲到我的數據庫中。 因此,我需要使用 ajax 將分數變量發布到我的 views.py 文件中,我的 function 正在運行,以將分數與用戶名一起提交給 Django 模型。
模型.py:
class Results(models.Model):
username = models.CharField(max_length=50,default='')
score = models.IntegerField()
def __str__(self):
return self.username
在這里,我采用了用戶名和分數變量。 用戶名是外鍵。
視圖.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:這里我使用表格提交分數和姓名。 我隱藏了用戶名,以便用戶無法更改名稱。
<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 發布請求,但我嘗試在同一索引中顯示分數。html。 它正在顯示,但我想要最后的分數值。html。 是否可以將index.html的分數(分數存儲在#result中)顯示到最后。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">
網址.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?
嘿下面是我試過的代碼。 我在 index.html 中創建了一個表單。 獲取虛擬輸入,標記並對其執行一些操作並將變量分數發送到末尾。html 並將其存儲在數據庫中。 由於我使用的是 JS ajax,因此我使用了 djano-rest 框架。 下面是代碼
模型.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Results(models.Model):
user = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
score = models.IntegerField()
marks = models.IntegerField()
索引.html
body>
<form id="scoreform" method="POST">
{% csrf_token %}
<p class="marks">
<label for="marks">Marks</label>
<input type="number" name='marks' id="id_marks">
</p>
<input type="submit" id="submit" value="Submit">
</form>
</body>
<script src="{% static 'main.js' %}"></script>
end.html
<body>
<form id="scoreform" method="POST">
{% csrf_token %}
<p class="username">
<label for="username">Label</label>
<input type="text" name="username" value={{score.user}}>
</p>
<p class="scores">
<label for="score">Score</label>
<input type="number" name='score' id="score-value" value={{score.score}}>
</p>
</form>
</body>
視圖.py
from django.shortcuts import render, redirect
from .models import Results
from .forms import Score
from django.contrib.auth.decorators import login_required
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import ResultSerializer
# Create your views here.
@api_view(['GET','POST'])
@login_required(login_url='users:login')
def score(request):
form = Score()
print(1)
if request.method == 'POST':
serializer = ResultSerializer(data=request.data)
print(serializer)
if (serializer.is_valid()):
print(3)
serializer.save(user = request.user)
return Response(request.user.pk)
return render(request, 'index.html', {'form': form})
#return redirect('score:end', pk=request.user.pk)
@login_required(login_url='users:login')
def end(request, pk):
score = Results.objects.get(pk=pk)
return render(request, 'end.html', {'score':score})
這也具有登錄功能,因為我想將用戶標記到分數。 我不知道誰清楚這會適合你。 但我真的希望這會有所幫助
你能試試這個
在views.py文件中如果方法是GET,則創建一個Result實例Model like result = Result.objects.get(pk = pk) pk是指主鍵獲取特定用戶的結果,並通過在您的視圖中識別出一些獨特的方法,例如 pk。 然后使用模板標簽顯示在最后。html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.