【发布时间】:2020-08-29 04:49:52
【问题描述】:
我正在尝试创建一个在 django 中生成随机值的函数,以便可以记录它,然后将其传递到一个 javascript 文件中,在该文件中旋转轮子以显示动画,然后在动画结束后将 10 个硬币放入个人资料帐户。问题是当我使用视图函数时,返回类型是页面重定向,所以动画被切断了。是否有一种 django 函数可以在没有重定向的情况下解析值,类似于 C++ void 函数?
这是我到目前为止的代码 视图.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>
谢谢!
【问题讨论】:
标签: javascript python html django view