После праздника хотелось поделится с вами своим опытом создания веб-приложения на Django. Все началось с того, что год назад познакомился с языком Python и понеслась. По проффесии я не программист, но мне это очень нравится.
Приближался 2016 год и я решил создать одностраничный сайт на Джанго: таймер до нового года здесь Разворачивать среду на ПК небыло желания, поэтому воспользовался сервисом: вот
Цель казалась очень простой — одна белая страничка с таймером и все. Но все было не так просто, и на этом я не остановился. Итак, регистрируемся, создаем приложение(процес настройки приводить не буду) и за работу.
Сразу приведу файл urls.py.
Сначала создадим представление.
Вдогонку содержимое файла dtny.html:
Конечно проще было написать на Джаваскрипт, но хотелось именно серверное время. И тут начинаются проблемы. Страничка отобразила время, но оно не идет, только F5 обновляет данные. На помощь приходит get(). Мы просто будем каждую секунду запрашивать страничку dtny с другой страницы в нашем случае home. Не знаю это нормальная практика или нет, но мне кажется что-то я делаю не так.
Содержимое index.html
И добавим немного стиля:
На этом все. Если можно сделать это логичней и красивей жду ваших решений. В следующей статье хотелось бы рассказать про чат, если это будет интересно.
Приближался 2016 год и я решил создать одностраничный сайт на Джанго: таймер до нового года здесь Разворачивать среду на ПК небыло желания, поэтому воспользовался сервисом: вот
Цель казалась очень простой — одна белая страничка с таймером и все. Но все было не так просто, и на этом я не остановился. Итак, регистрируемся, создаем приложение(процес настройки приводить не буду) и за работу.
Сразу приведу файл urls.py.
from django.conf.urls import patterns, include, url
<anchor>habracut</anchor>
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^$', 'dtny.views.home', name='home'),
url(r'^dtny', 'dtny.views.dtny', name='dtny'),
)
Таймер
Сначала создадим представление.
from django.shortcuts import render
def dtny(request):
from datetime import datetime, timedelta
ny = datetime(2016, 1, 1) #дата нового года
now = datetime.now() + timedelta(hours=2) #Поправка, временная зона
nowformat = str(now).split(".")
diff = ny – now #вычитаем
diffformat = str(diff).split(".")
if diffformat[0] == "0:00:00" or "-" in diffformat[0]: #если нулевое или отрицательное время - поздравляем с новым годом
context = {"left":"Happy New 2016 Year! " + nowformat[0]}
else: #если нет- таймер обратного времени
context = {"left":"Until the New 2016 Year in Ukraine: " + diffformat[0]}
return render(request, 'dtny.html', context)
Вдогонку содержимое файла dtny.html:
{{left}}
Конечно проще было написать на Джаваскрипт, но хотелось именно серверное время. И тут начинаются проблемы. Страничка отобразила время, но оно не идет, только F5 обновляет данные. На помощь приходит get(). Мы просто будем каждую секунду запрашивать страничку dtny с другой страницы в нашем случае home. Не знаю это нормальная практика или нет, но мне кажется что-то я делаю не так.
function show(){
$.get("http://danilpetrovich.pythonanywhere.com/dtny", function(data) {
$("#content").html("<h1> " + data + "</h1>");
});
}
$(document).ready(function(){
setInterval("show()",1000);
});
Содержимое index.html
<div id="content" class="snow"></div>
И добавим немного стиля:
#content {
position: fixed;
top: 66%;
left: 50%;
width: 90%;
height:50%;
margin: -15% 0 0 -44%;
}
h1 {
font-family: 'Times New Roman', Times, serif;
font-size: 550%;
position: fixed;
top: 35%;
color: #5C3566;
text-align:center;
}
.snow {
text-shadow:
white 1px 0px,
white 1px 1px,
white 0px 1px,
white -1px 1px,
white -1px 0px,
white -1px -1px,
white 0px -1px,
white 1px -1px,
white 0 0 3px,
white 0 0 3px,
white 0 0 3px,
white 0 0 3px,
white 0 0 3px,
white 0 0 3px,
white 0 0 3px,
white 0 0 3px;
}
На этом все. Если можно сделать это логичней и красивей жду ваших решений. В следующей статье хотелось бы рассказать про чат, если это будет интересно.