javascript - django:如何从客户端设置服务器的日期和时间

标签 javascript django datetime django-models

我试着简化我的情况:

我有两台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/

相关文章:

javascript - Play Framework - 在函数中定义我的 Javascript 文件

JavaScript 竞争条件?

python - Django elasticsearch-dsl在pre_save上更新M2M

c# - 转换.日期时间

javascript - 创建客户端日期时间直方图

javascript - Onclick 将变量调用到数据中

Django-获取当前的manage.py命令

python - 在 easy-thumbnails 中使用 jpegoptim 和 PIL

r - 从R中的日期时间提取日期的最快方法

javascript - 在悬停时终止 jQuery 淡入淡出效果