Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 07:04:08

Страниц: [1] 2 3
Печать
Автор Тема: помагите чайнику  (Прочитано 353 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vasa_c    ↓ 
27 Ноябрь, 2011, 07:16:54
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

здраствуйте ,дорогие професионалы.
я сам программировать не умею но хочу научиться так как за это говорят платят хорошо.
мой знакомый (он делает саиты) посоветывал изучать фреймворк джанга на языке петон.
я изучаю его уже второй день но у меня остаются вопросы а гуглом я пользоваться не умею.
помогите!!!)))!
 

1. Настройка сервера. Делаю так (в одном каталоге):
./project/ - здесь код на питоне. здесь тестовый сервак запускаю (./manage.py runserver)
./templates/ - здесь шаблоны, чтобы дизайнеры вообще в project не лезли.
./www/ - здесь картинки, стили и вобщем вся статика.
 
И в nginx.conf:
Text

server {
    ...
    root .../www;
 
    location ~ ^/(i|css|js) {
    }
 
    location / { # всё кроме статики проксирую на джаного-сервер
            proxy_pass http://django; # здесь тестовый сервер, на продакшене видимо fastcgi какой-то
            ...
    }
    ...
}
 

Это правильно или есть более рассово верные пути?
 

2. Несколько url под одну регулярку.
Есть на сайте модели - Country (страны) и City (города). Урлы у них такие:
site.loc/russia/ - страна
site.loc/moscow/ - город
то есть один каталог латиницей и "-".
На этапе разбора регуляркой никак выяснить страна это или город нельзя.
Делаю так:
 
Python

# urls.py
from django.conf.urls.defaults import *
from hotel.hotels import views
 
urlpatterns = patterns('',
    (r'^([a-z0-9_-]+)/$', views.country_or_city),
)
 

во вьюхах:
Python

def country_or_city(request, url):
    try:
        ocountry = Country.objects.get(url=url)
    except Country.DoesNotExist:
        pass
    else:
        return country(request, ocountry)
       
    try:
        ocity = City.objects.get(url=url)
    except City.DoesNotExist:
        pass
    else:
        return city(request, ocity);
       
    raise Http404
 
def country(request, url = None, ocountry = None):
    ...
   
def city(request, url = None, ocity = None):
    ...
 

Как разрулить ситуацию более изящно?
 
Мне правильным кажется решение:
Python

urlpatterns = patterns('',
    (r'^([a-z0-9_-]+)/$', views.country),
    (r'^([a-z0-9_-]+)/$', views.city),
)
 
Если country не находит нужной страны, то отплёвывает какой-то результат типа "это не моё" и поиск нужной вьюхи идёт дальше.
В джанге есть что-либо подобное?
 

3. Контроллер слоя. Вот есть, допустим, сайт. Справа облака "по жанрам", "по годам". И так на нескольких страницах.
Это понятно - есть контент конкретной страницы, а есть общий слой, в котором отрисовываются эти страницы.
 
Как в шаблонах организовать деление на страница/шаблон понятно - наследование шаблонов там есть.
А как быть с вьюхо-контроллерами? Данные для этих облаков нужно из моделей выбирать и в шаблон передавать. Делать это для каждой вьюхи?
 

4. Конфиги для разных платформ. Есть вот settings.py и в нём конфигурация базы прописана.
А если у меня на локалке одни параметры, а на продакшене, где тот же код работает, другие.
 
Как это решается?
 

5. Конфиги для модулей. В settings.py настройки самого Django. А что делать с самописными модулями? Пихать каждому свой settings.py? Валить всё в глобальный settings.py?
 

6. Формирование адресов страниц.
Есть страница (новость): /news/2011/11/27/ololo/
 
Как правильно вставлять подобные ссылки?
Формировать из всего говна прямо в шаблоне?
Формировать во вьюхе?
Добавить в модель News метод getPageUrl()?
 
Душа просит какого-нибудь UrlBuilder'а, где бы все ссылки шаблонами прописывались.
Тем более, что шаблоны по сути уже есть - это регулярки в url.py.
Записан

Ivan    ↓ 
27 Ноябрь, 2011, 07:42:41 , спустя 25 минут 47 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 27
Сообщений: 1366
Сила слова: 1.98

location ~ ^/(i|css|js) {
   }

 
Text

location ~ ^/(i|css|js) {
        access_log off;
        expires 30d
}
« Последнее редактирование: 27 Ноябрь, 2011, 07:42:41 от Ivan » Записан

mario    ↓ 
27 Ноябрь, 2011, 07:48:43 , спустя 6 минут 2 секунды
НЕ ХУЕТА! ХУЕТА!

wazzup
Группа: Джедаи

Карма: 67
Сообщений: 6162
Сила слова: 1.09


location ~ ^/(i|css|js) {
   }

 
Text

location ~ ^/(i|css|js) {
        access_log off;
        expires 30d
}
желательно не только аццесс лог выключать, но и вообще все логи отключать )
Записан

с ув. mario.
Контакты
Абырвалг    ↓ 
27 Ноябрь, 2011, 08:07:19 , спустя 18 минут 36 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

Как разрулить ситуацию более изящно?
в джанге нет forward'а? из одного контроллера/экшена форвардим на другой
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
mario    ↓ 
27 Ноябрь, 2011, 08:11:09 , спустя 3 минуты 50 секунд
НЕ ХУЕТА! ХУЕТА!

wazzup
Группа: Джедаи

Карма: 67
Сообщений: 6162
Сила слова: 1.09


Как разрулить ситуацию более изящно?
в джанге нет forward'а? из одного контроллера/экшена форвардим на другой
почему мне не нравится данный прием? Меня от него воротит, шо пиздец.. :)
Записан

с ув. mario.
Контакты
Абырвалг    ↓ 
27 Ноябрь, 2011, 08:13:04 , спустя 1 минуту 55 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

почему мне не нравится данный прием?
а это я у тебя хотел спросить
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
mario    ↓ 
27 Ноябрь, 2011, 08:16:24 , спустя 3 минуты 20 секунд
НЕ ХУЕТА! ХУЕТА!

wazzup
Группа: Джедаи

Карма: 67
Сообщений: 6162
Сила слова: 1.09

а это я у тебя хотел спросить
ну у меня как то мозг противится тому что контроллер начинает играть роль роутера...
Записан

с ув. mario.
Контакты
vasa_c    ↓ 
27 Ноябрь, 2011, 08:19:05 , спустя 2 минуты 41 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

в джанге нет forward'а? из одного контроллера/экшена форвардим на другой
хз что в джанге есть )
а это как, прямо из контроллера указывать в какой контроллер дальше идти?
Записан

Sinkler    ↓ 
27 Ноябрь, 2011, 08:19:17 , спустя 12 секунд
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 73
Сообщений: 6808
Сила слова: 1.07

ну у меня как то мозг противится тому что контроллер начинает играть роль роутера...
да ну
Записан

Абырвалг    ↓ 
27 Ноябрь, 2011, 08:25:17 , спустя 6 минут
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

а это как, прямо из контроллера указывать в какой контроллер дальше идти?
Да
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
mario    ↓ 
27 Ноябрь, 2011, 08:27:02 , спустя 1 минуту 45 секунд
НЕ ХУЕТА! ХУЕТА!

wazzup
Группа: Джедаи

Карма: 67
Сообщений: 6162
Сила слова: 1.09

а это как, прямо из контроллера указывать в какой контроллер дальше идти?
ну например в зенде http://framework.zend.com/manual/en/zend.controller.action.html#zend.controller.action.prepostdispatch
Записан

с ув. mario.
Контакты
vasa_c    ↓ 
27 Ноябрь, 2011, 08:27:36 , спустя 34 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

зачем контроллеру "Страна" знать, что есть ещё контроллер "Город", и формат его урла совпадает со страной, и он ещё не был проверен?
это получается практически тоже, что и я написал.
Записан

adw0rd    ↓ 
27 Ноябрь, 2011, 08:33:29 , спустя 5 минут 53 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17633
Сила слова: 1.67

1)
Это правильно или есть более рассово верные пути?
неправильно.
Правильно иметь в каждом application по templates и static, далее собирать static в одно через ./manage.py collectstatic
https://docs.djangoproject.com/en/dev/howto/static-files/
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
adw0rd    ↓ 
27 Ноябрь, 2011, 08:38:48 , спустя 5 минут 19 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17633
Сила слова: 1.67


Как разрулить ситуацию более изящно?
в джанге нет forward'а? из одного контроллера/экшена форвардим на другой
есть https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
vasa_c    ↓ 
27 Ноябрь, 2011, 08:48:20 , спустя 9 минут 32 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

есть https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse
это и есть единственно верное решение моего вопроса?
Записан

Страниц: [1] 2 3
Печать
 

Перейти в: