【发布时间】:2020-01-21 20:42:11
【问题描述】:
我正在开发一个使用 Django 来检查加密货币价格的网站。 我想加载存储在 django sqlite3 数据库文件中的值而不使用 ajax 刷新(F5)。我该怎么办?
(但是,如果用户手动刷新页面,值会发生变化。这是因为该值是从数据库中加载的。)
爬虫会自动收集加密货币价格和其他信息,并实时存储在您的Django项目中的db.sqlite3中。
index.html(这个HTML模板是静态的,它的值不会实时变化。)
{% extends 'exchange/layout.html' %}
{% load humanize %}
{% block title %}XCoin{% endblock %}
{% block body %}
<table class="table table-condensed">
<thead>
<tr>
<th>#</th>
<th>Name</th>
<th>Price</th>
<th>Market Cap</th>
<th>Volume (24h)</th>
<th>Circulating Supply</th>
</tr>
</thead>
<tbody>
{% for coin in coins %}
<tr>
<td>{{coin.ranking}}</td>
<td>[ {{coin.abbreviation}} ] {{coin.name}}</td>
<td>{{coin.price|intcomma}}$</td>
<td>{{coin.marketcap|intcomma}}$</td>
<td>{{coin.volume|intcomma}}$</td>
<td>{{coin.circulatingsupply|intcomma}} {{coin.abbreviation}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
urls.py
from django.contrib import admin
from django.urls import path
from . import views
app_name = 'exchange'
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='home'),
]
models.py
from django.db import models
class Coin(models.Model):
ranking = models.IntegerField() # coin ranking
abbreviation = models.CharField(max_length=10) # coin symbol
name = models.CharField(max_length=20) # coin name
price = models.FloatField() # coin price ($)
marketcap = models.IntegerField() # coin marketcap ($)
volume = models.IntegerField() # coin volume (24h)
circulatingsupply = models.IntegerField() # coin supply
def __str__(self):
return self.name
views.py
from .models import Coin
from django.shortcuts import render
from django.shortcuts import HttpResponse
def index(request):
coin = Coin.objects.all()
context = {'coins':coin}
return render(request, 'exchange/index.html', context)
【问题讨论】:
-
一种方法是创建一个 API 端点,您可以在其中获取最新价格,然后使用 JS 您可以刷新 HTML 中的价格,而无需重新加载整个页面。您还可以设置一个 JS 计时器,在固定或随机间隔内触发价格。
-
从您显示的代码中,您应该有一个比“我应该怎么做?”更具体的问题。你坚持哪个具体部分?
-
首先第一个建议是不要在模型的每个属性之后使用这样的 cmets。很明显,硬币模型内部的价格属性将是硬币价格。第二一个简单的谷歌搜索术语,如“Django with Ajax”,将对您有所帮助
标签: javascript python jquery django ajax