Форум сайта python.su
0
Ребята, привет.
Есть такая задача - присобачить к джанго динамику. Точнее динамический интерфейс.
Порылся в инете, нашел что-то подобное что нужно: http://ajaxdaddy.com/demo-dynamic-content.html
Естественно нужно, чтоб вместо articleN.html подкладывались мои страницы.
Но как мне заставить это интерфейс работать под Джанго? Просто не знаю даже как начать.
Модель, что то типа, выбираешь “дать объяву”, появляется подобная динамическая страница, и кликая по вкладкам справа, появляются формочки для заполнения, загрузки фоток…
Офлайн
1
1. Делаешь то, что нужно, так, что бы работало без без ajax (доки django).
2. Прикручивашь jquery и делаешь загрузку динамической части через javascript (доки jquery).
3. …
4. PROFIT
Офлайн
0
Ferroman Спасибо
1) сделал. Работает отдельными страницами. Все делает.
2) Вот тут я стопорнул. Гуглю, но как то все не по теме, или я не понимаю, что по теме.
…
4) До этого далеко - это ознакомительная работа.
Отредактировано (Дек. 15, 2010 23:09:13)
Офлайн
1
Всё тоже самое, что и в пункте 1 только используйте, например,
http://api.jquery.com/load
для обращения к урлу страницы (перехватить клик на урле - http://api.jquery.com/click/).
$('#result').load('ajax/test.html');Офлайн
0
Ferroman
Спасибо. Посмотрел Ваши ссылки. Понял что и как. Но не до конца.
Вопросов пара:
1) Делаю следующем образом:
Это тот шаблон (не весь, а избранное), что вызывается после пункта - “добавить объявление” - “Купить”:
<div id="contentContainer"></div>
<div id="ListContainer">
<ul id="contentList" class="contentList">
<li id="photo_add">Add photo</li>
<li id="descr_add">Add description</li>
<li id="panorama_add">Add panorama</li> <!-- тут можно добавить видео -->
</ul>
</div>
<script>
$('#panorama_add').click(function () {
$("#contentContainer").load("Autoring1/form_upload.html"); <!-- Тут вопрос -->
});
</script>
def save_view_panorama(request):
if request.method == 'POST':
form = PanoramaForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('ok/')
else:
form= PanoramaForm()
template = form_upload.html'
return render_to_response(template,
{'form': form},
context_instance=RequestContext(request))
{% extends "base.html" %}
{% block title %}Add{% endblock %}
{% block content %}
<h1>Upload {{ object }} </h1>
{% if form.errors %}
<p style="color: black; background: magenta; "> Requered fields: {{ form.errors|pluralize }} </p>
{% endif %}
<form action="" method="post" enctype="multipart/form-data" >{% csrf_token %}
{{ form.as_p }}<br>
<input type="submit" name="submit" value="Upload" id="submit">
</form>
{% endblock %} $("#contentContainer").load("Autoring1/form_upload.html");Офлайн
8
Самый простой и надежный способ - указать правильный URL для сабмита формы, то есть в Вшем случае сделать например action=“/obyavlenie/panorama/some-id/” - где some-id - идентификатор конкретного объявления. Тогда Вы при обработке сабмита формы будете точно знать, какое именно объявление обрабатывается.
Причем с точки зрения уменьшение связности системы лучше action прописывать на стороне сервера в шаблоне.
Ну а если у Вас такого добра много, то возможно Вам будет полезно почитать, как подобные вещи делают в лучших домах Ландона - http://www.facebook.com/note.php?note_id=389414033919 - хотя это, конечно, сложнее, чем текущий вариант.
Офлайн
1
.load("Autoring1/form_upload.html");Офлайн
0
Ferroman
Под “путем” Вы имеете ввиду то что последним указано?
url(r'^upload/panorama/$', 'My_project.Autoring1.views.save_view_panorama'),
.load("D:/My_project.Autoring1/views.py");Офлайн
1
http://localhost:8000/My_project/upload/panorama/
Офлайн
0
Ferroman
Сэнкс, я так и понял (проанализировал, так сказать.) Но в любом случае, пока не работает.
В случае
<script>
$('#panorama_add').click(function () {
$("#contentContainer").load("http://localhost:8000/My_project/upload/panorama/");
});
</script>
Офлайн