我试着简化我的情况:
我有两台PC,PC1(“服务器”)不上网,PC2(“客户端”)可以上网(他们通信彼此之间)。
进入 PC1 我有我的 Django 项目、数据库等。而使用 PC2 我可以通过浏览器访问我的项目等等。
我想达到这个目标:
PC1 自动从 PC 2 获取日期和时间,在 PC 1 中,每个操作都引用 PC2 的时间和日期。
| PC1 (server-side) | <--datetime--- | PC2 (client-side) |<----- datetime from web
实际上我可以用一些 js 获取客户端日期时间:
datetime.js
$(document).ready(function(){
var myVar=setInterval(function(){myTimer()},1000);
function myTimer() {
var myDate = new Date();
var strDate = myDate.getFullYear()+ "-" +(myDate.getMonth()+1)+ "-" +myDate.getDate();
var strTime = myDate.getHours()+ ":" + myDate.getMinutes() +":" + myDate.getSeconds();
document.getElementById("data").innerHTML = myDate.toLocaleString();
}
})
模型.py
from django.db import models
class ProvaTime(models.Model):
somewords = models.CharField(max_length=30)
myauthor = models.ForeignKey('auth.User', null=True, blank=False)
created_date = models.DateTimeField() # how tell it to pick js timedate?
def save(self, *args, **kwargs):
super(ProvaTime, self).save(*args, **kwargs)
表单.py
from django import forms
from .models import ProvaTime
class ProvaTimeForm(forms.ModelForm):
class Meta:
model = ProvaTime
fields = ('somewords',)
views.py
def testime(request):
elements =ProvaTime.objects.filter().order_by('-created_date')
if request.method == 'POST':
form = ProvaTimeForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.author = request.user
obj.save()
else:
form = ProvaTimeForm()
return render(request, 'provapp/testime.html', {'form': form, 'elements': elements})
def myviewtomodel(request): # how to do?
provapp/testime.html
<form action="/testime/" method="post">
{% csrf_token %}
{{ form.as_table }}
<input type="submit" value="LIST" />
</form>
<br />
<br />
<div class="table-responsive">
<table class="table table-bordered">
<tr class="info">
<td width="15%" align="center">SOMETHING WORDS</td>
<td width="15%" align="center"> CREATION DATETIME </td>
<td width="15%" align="center"> AUTHOR </td>
<td>
</td>
{% for stuff in elements %}
<div class="stuff">
<tr>
<td>{{stuff.somewords}}</td>
<td>{{stuff.created_date}}</td>
<td>{{stuff.myauthor}}</td>
</div>
{% endfor %}
</table>
</div>
如何将 JS 日期时间发送到 models.py?
最佳答案
您应该明确地将 javascript 日期传递给您的模型。
model.created_date = date_from_javascript
由于您已将 created_date
的默认值设置为 timezone.now
,因此它将在未向其传递任何内容时使用服务器的时区。
例如
$.ajax({
url: '/myview/',
data: {'javascript_date' : javascript_date},
method: 'post',
....
});
在你的 django View 中:
def MyView(request):
javascript_date = request.POST['javascript_date']
m = MyModel(created_at=javascript_date)
m.save()
关于javascript - django:如何从客户端设置服务器的日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30073268/