Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 12, 2013 14:04:30

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Динамическое обновление.

Farsatanis
Что это? Я если честно хочу избужать сокетов. Пытаюсь пока просто посредством ajax забацать это - но глухо .А с сокетами я еще глыбже зароюсь (
Дорогой друг,
"/static/file.php"
вполне вероятно, что PHP умеет делать чудеса, Django (а это форум по Django, а вовсе не по PHP) к сожалению не умеет. Вы можете пошагово по пунктам русскими словами или на крайний случай в виде PHP кода рассказать, что по вашему должно происходить на клиенте и на сервере?



Офлайн

#2 Авг. 12, 2013 14:13:55

Farsatanis
Зарегистрирован: 2013-08-09
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое обновление.

Я в php разбираюсь как свинья в апельсинах. Прост ону где нашел какой нибудь пример , пытаюсь его переделать под себя. В основном во всех примерах ajax используется php в url. Я точно чего то не понимаю.
FishHook , не ругайся Я очень крабский нуб. Но разобратсья охота. А сделать то что я делаю еще сильнее хочется , но уже неделю словно башкой о стенку бьюсь. И весьма вероятно что мозгов не осталось.

Отредактировано Farsatanis (Авг. 12, 2013 14:14:42)

Офлайн

#3 Авг. 12, 2013 14:18:52

Farsatanis
Зарегистрирован: 2013-08-09
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое обновление.

View.py:

# Create your views here.
import os
from django.shortcuts import render
from django.shortcuts import render_to_response
log_dir = '/home/***/log'
def list_files(request):
    file_list = [f for f in os.listdir(log_dir) if
                 os.path.isfile(os.path.join(log_dir, f))]
    return render_to_response('list_files.html', {'file_list':file_list})             
    
def view_log(request, filename):
    logfile = open(os.path.join(log_dir, filename), 'r')
    loglines = logfile.read()
    return render_to_response('view_logfile.html', {'loglines': loglines,
                                                    'filename': filename})   
   
urls.py:
from django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
    url(r'^$', views.list_files, name='list_files'),
    url(r'^(?P<filename>.*?)/$', views.view_log, name='view_log'),
    
)
<!DOCTYPE HTML>
<html>
<head>
    <title>View file</title>
      
</head>   
<body>
<script src="/static/jquery.js" type="text/javascript"></script>
<pre style ="background:beige;text-align:center;font-size:20px">{{loglines}}</pre>
</body> 
</html>

Вот собственно основные мои убогенькие файлы. Есть еще 1 , но он тут не играет роли.
И как отталкиваясь от того что я имею намутить ajax(да, я знаю что форум по Django) без юзанья сокетов.

Отредактировано Farsatanis (Авг. 12, 2013 14:19:29)

Офлайн

#4 Авг. 12, 2013 14:27:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Динамическое обновление.

Начнем с того, как клиент должен узнать о том, что файл изменился?
Каким образом к нему должна поступить сия информация?
Есть два способа получить информацию:
1. Запросить её у источника информации
2. Источник информации сам её тебе сообщает без запроса.

Тебя какой случай интересует?



Офлайн

#5 Авг. 12, 2013 14:32:16

Farsatanis
Зарегистрирован: 2013-08-09
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое обновление.

Честно , я об этом даже не задумывался. Пускай будет 1.

Офлайн

#6 Авг. 12, 2013 14:38:43

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Динамическое обновление.

Farsatanis
Честно , я об этом даже не задумывался. Пускай будет 1.
Я тебе на первой странице рассказал, в чем разница между аяксом и веб-сокетами.
Пускай будет 1
Ну пускай.
Клиент у нас запрашивает изменение. Возникают вопросы, а в какой момент будет уходить запрос?
Вижу два варианта:
1. По таймеру, скажем раз в пять секунд спрашиваем сервер “А не изменился ли файл?”
2. По событию, какому событию, я не знаю, например при изменении текста в textarea или по нажатию кнопки “обновить”.

Какой вариант тебе больше нравится?



Офлайн

#7 Авг. 12, 2013 14:42:09

Farsatanis
Зарегистрирован: 2013-08-09
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое обновление.

Я больше склоняюсь к первому. Я даже пытался его сделать, но как то безуспешно.

Офлайн

#8 Авг. 12, 2013 14:56:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Динамическое обновление.

Ок, теперь вопрос, а какая собственно информация должна уходить к серверу и какая приходить в ответ?
Ну, однозначно, название файла (его айди, url, что-то еще, не важно) и, наверное, время последнего обновления. Сервер, должен найти файл по названию (айди и тп.) и сравнить время последнего изменения со временем, которое пришло от клиента. Если оно больше, то сервер должен отправить на клиента…. Что? Весь файл? Или только обновленный кусок? А если кусков несколько? Позицию начала и конца изменения?


А может быть заюзать какой-нибуть CVS?
http://ru.wikipedia.org/wiki/CVS и не изобретать велосипед?



Отредактировано FishHook (Авг. 12, 2013 14:56:39)

Офлайн

#9 Авг. 12, 2013 15:08:18

Farsatanis
Зарегистрирован: 2013-08-09
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое обновление.

Ну можно заюзать я правда так даже не думал делать

Но у меня эти фалы которые открываются - это просто логи.

Отредактировано Farsatanis (Авг. 12, 2013 17:27:20)

Офлайн

#10 Авг. 12, 2013 18:08:18

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Динамическое обновление.

Вот тебе домашнее задание:
1) сделай урл /check_state который вернет json
{is_updated: true} если были изменения файлов
или
{is_updated: false} если их не было

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version