2014-01-06 5 views
0

Я пытаюсь создать сайт на основе django. Цель одной части сайта - показать содержимое базы данных в отношении ее файловой структуры.Сохранять URL-адрес во время работы с серфингом данных Структура в веб-приложении Django

Я бы хотел, чтобы URL-адрес оставался неизменным, в то время как он глубже проникал в структуру файла, а не разрабатывал другое представление для каждого уровня файловой структуры, в которую входит человек.

Самый простой способ, которым я могу думать, чтобы достигнуть этого пройти текущий путь к каталогу в запросе переменной, но я не знаю, как это сделать, или, если это возможно, так как она должна была бы быть связаны html-файл, а не файл представления, написанный на python.

Если вы в состоянии, по крайней мере, указать мне в правильном направлении, было бы полезно!

ответ

0

Вы хотите сказать, что хотите избежать ссылок, например www.example.com/db-contents/?level=2? Передача переменных через request.GET - это обычный способ сделать это. Все запросы перейдут на тот же URL-адрес и вид, и вы можете просто сделать request.GET['level'] в шаблоне.

Если вы абсолютно хотите, чтобы URL-адрес оставался полностью статическим (`www.example.com/db-contents/), вы можете отправлять и получать ваши данные через AJAX-звонки.

путем добавления ?foo=bar к URL это означает, что вы можете получить доступ к ключу «Foo» в request.GET словаре, и значение этого ключа будет "bar". для нескольких переменных, которые вы разделяете символом &.

Например:

www.example.com/db-contents/?foo=bar&somevar=1&anothervar= 

>>> request.GET['foo'] 
'bar' 
>>> request.GET['somevar'] 
'1' 
>>> request.GET['anothervar'] 
None 
>>> "anothervar" in request.GET 
True 
>>> "notsetvar" in request.GET 
False 
+0

Первый пример 'www.example.com/db-contents/? Level = 2' был бы в порядке, за исключением нескольких вариантов для уровня 2, что означает, что я не могу просто изменить уровень = 2 на уровень = 3 для следующего уровня вниз. Если структура файла переходит в 7 уровней, наиболее простой способ кодировать это из того, что я вижу, это иметь URL-адрес 'www.example.com/db-contents/?levelname2/?levelname3/?levelname4/?levelname5 /? levelname6 /? levelname7' Я надеялся, что будет простой способ избежать этого, не перейдя к любому типу JS –

+0

, переменные запроса не являются частью URL-адреса как такового (вам не нужна косая черта между их). Они являются парами ключ/значение, очень похожими на словарь python. Не могли бы вы привести пример структуры db, которую вы хотите отобразить? В настоящее время я не уверен, что вы имеете в виду под именем level2, levelname3 и т. Д. – ptr

+0

ваш «вам не нужен косой чертой между ними», просто потенциально очистил все. Я могу просто отправить структуру каталогов из URL-адреса, но используя 'www.example.com/db-contents/? Leve1-level2-leve3', где я могу просто преобразовать это в путь к каталогу в этой функции. Я должен решить, какой символ использовать для разделения путей, хотя. Спасибо, я думаю, теперь это привело к другому вопросу. –

0

Я бы предложил изучить формы на сайте документации Django. Когда пользователь отправляет форму, соответствующая информация о файловой структуре будет передана вашему коду просмотра. Код представления затем может передать новую информацию о структуре файла в ваш шаблон. Шаблон создаст формы, и процесс начнется снова.

+0

Форма была интересным способом пойти об этом, но от того, что я вижу в документации, она будет в основном нужен ввод текста пользователя, и я надеялся, что за клик и идти. –

+0

Помните, что любой текстовый ввод может быть скрыт от пользователя, но все еще передан при нажатии кнопки отправки формы. Хорошая вещь об использовании формы заключается в том, что вы можете использовать POST вместо GET и, следовательно, не беспокоиться о параметрах URL. Но это действительно сводится к тому, что лучше всего/проще всего для вашей конкретной ситуации. –