我正在尝试创建一个在django中生成随机值的函数,以便可以对其进行记录,然后将其传递到一个javascript文件中,在该文件中它旋转一个轮子以显示动画,然后在动画结束后将10个硬币放入个人资料帐户。问题是当我使用视图函数时,返回类型是页面重定向,因此动画被截断了。是否有一种django函数可以像C ++ void函数一样在没有重定向的情况下解析值?
这是我到目前为止的代码 views.py
@login_required
def Red(request):
profile = get_object_or_404(Profile, user=request.user)
profile.coins += 10
profile.save(update_fields=['coins'])
random = random.randrange(11)
return render(request, "bets/bets.html", {'random' : random})
个人资料模型:
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
coins = models.DecimalField(max_digits=9, decimal_places=2, default=0.00)
def __str__(self):
# @ts-ignore
return f'{self.user.username} Profile'
以及其中包含javascript的html
<div class="Container">
<div class="inputContainer" blank="False">
{% csrf_token %}
<span class="coinContainer2"><i class="fas fa-coins"></i></span>
<input name="amount" class="amountInput" type="number" min="0.01" placeholder="Enter Amount">
<div class="sideContainer" id="buttonNav">
<span class="redButton"><button type="button" class="btn btn-danger" id="buttonRed" name = "redButton"> <a href="{% url 'redButton' %}" style="text-decoration: none; color: white;"> Red </a> </button></span>
</div>
</div>
</div>
</div>
<script>
var itemSelected = 0;
var stoping = false;
jQuery(function ($) {
var $owl = $('.owl-carousel');
// Initialize Owl
$('.owl-carousel').owlCarousel({
center: true,
loop: true,
margin: 10,
nav: false,
mouseDrag: false,
touchDrag: false,
pullDrag: false,
dots: false,
responsive: {
0: {
items: 3
},
600: {
items: 3
},
1000: {
items: 7
}
}
});
// Click in button Jump
$('#buttonNav').click(function (e) {
e.preventDefault();
stoping = false;
// Random between 1 and 10
//var itemSelected = Math.floor((Math.random() * 11));
itemSelected = "{{ winner }}";
var $jump = $(this);
//$jump.html('Jumping ...');
$jump.attr('disabled', 'disabled');
// Trigger autoplay owl
$owl.trigger('play.owl.autoplay', [100]);
// Slow speed by step
setTimeout(slowSpeed, 2000, $owl, 200);
setTimeout(slowSpeed, 4000, $owl, 250);
setTimeout(slowSpeed, 5000, $owl, 300);
setTimeout(stopAutoplay, 6000);
return false;
});
// Event changed Owl
$owl.on('changed.owl.carousel', function (e) {
if (stoping) {
// Examine only if roulette stop
var index = e.item.index;
var element = $(e.target).find(".owl-item").eq(index).find('.element-roulette');
var item = element.data('item');
if (item == itemSelected) {
// If element equals to random, stop roulette
$owl.trigger('stop.owl.autoplay');
//$('#buttonNav').html('Jump');
$('#buttonNav').removeAttr('disabled');
}
}
});
// Showcase
slowSpeed($owl, 1400);
});
/**
* Reduce speed roulette
* @param {type} $owl
* @param {type} speed
* @returns {undefined}
*/
function slowSpeed($owl, speed) {
$owl.trigger('play.owl.autoplay', [speed]);
}
/**
* Stop autoplay roulette
* @returns {undefined}
*/
function stopAutoplay() {
stoping = true;
}
</script>
谢谢!
答案 0 :(得分:2)
我相信这只有通过JavaScript或jquery才能实现。
https://api.jquery.com/jQuery.get/
该函数的URL。
Idk知道django的烧瓶与众不同,但是一周前我使用本教程自己弄清了这一点。 https://flask.palletsprojects.com/en/1.1.x/patterns/jquery/