2013-02-13 24 views
14

Czy ktoś może uzyskać Yeoman do pracy z Django? Próbowałem go skonfigurować i nawet jeśli zmienię mój plik pomruku na poprawne ścieżki, nadal używa on wartości domyślnej.Konfigurowanie Yeoman z Django

Szukałem tylko, ale to nie znaczy, że ktokolwiek używa takiej struktury plików.

+0

Ja osobiście polecam skorzystanie brunch z Django zamiast - https://github.com/sebastibe/brunch-django-examples Brunch jest również bardziej dojrzała biblioteka porównaniu Yeoman. Ale to nie odpowiada na twoje pierwotne pytanie. Stąd tylko komentarz tutaj. :-) –

Odpowiedz

29

To był naprawdę głupi komentarz, który napisałem powyżej. :-)

Oto odpowiednia odpowiedź! Yeoman jest po prostu narzędziem do rusztowania, aby szybko generować pliki css, js i html. Używam go w całkowicie oddzielony od siebie sposób, czysto oddzielony od django.

Oto struktura drzewa witryny frontendu.

/Users/calvin/work/yeoman-test/ 
|~app/ 
| |~scripts/ 
| | |~controllers/ 
| | | `-main.js 
| | |~vendor/ 
| | | |-angular.js 
| | | |-angular.min.js 
| | | |-es5-shim.min.js 
| | | `-json3.min.js 
| | `-app.js 
| |~styles/ 
| | |-bootstrap.css 
| | `-main.css 
| |+views/ 
| |-.buildignore 
| |-.htaccess 
| |-404.html 
| |-favicon.ico 
| |-index.html 
| `-robots.txt 
|~test/ 
| |+spec/ 
| `+vendor/ 
|-.gitattributes 
|-.npmignore 
|-Gruntfile.js 
|-package.json 
`-testacular.conf.js 

A oto struktura drzewa dla aplikacji django działającej jako czysta usługa sieciowa json. Używanie django-tastypie.

/Users/calvin/work/yeomandjango/ 
|~deploy/ 
| |-crontab 
| |-gunicorn.conf.py 
| |-live_settings.py* 
| |-nginx.conf 
| `-supervisor.conf 
|~requirements/ 
| `-project.txt 
|+static/ 
|-.gitignore 
|-.hgignore 
|-__init__.py 
|-__init__.pyc 
|-dev.db 
|-fabfile.py 
|-local_settings.py 
|-local_settings.pyc 
|-manage.py* 
|-settings.py 
|-settings.pyc 
|-urls.py 
`-urls.pyc 

Uruchamiając Django usługi internetowej z domeny i adresy URL, takich jak http://service.mysite.com/api/v1/ io naszą frontend jako pisarza generowane „statyczny” site http://mysite.com nazywając tych adresów URL API, ile potrzeba.

Utworzona przez yomana aplikacja AngularJS po prostu POSTS/GETS/PUTS/DELETES zasoby/adresy URL api podane przez nasze API Django-tastypie.

Jest to luźno powiązana konfiguracja, którą można rozważyć.

Należy jednak pamiętać, że to ustawienie wykonuje "żądania interfejsu API w wielu domenach". Oznacza to, że w naszej "serwerowej" aplikacji django będziemy musieli obsługiwać CORS.

Oto przykład kodu pośredniego, który musi zostać zaimplementowany po stronie serwera Django, aby to działało.

import re 

from django.utils.text import compress_string 
from django.utils.cache import patch_vary_headers 

from django import http 

try: 
    import settings 
    XS_SHARING_ALLOWED_ORIGINS = settings.XS_SHARING_ALLOWED_ORIGINS 
    XS_SHARING_ALLOWED_METHODS = settings.XS_SHARING_ALLOWED_METHODS 
except: 
    XS_SHARING_ALLOWED_ORIGINS = '*' 
    XS_SHARING_ALLOWED_METHODS = ['POST','GET','OPTIONS', 'PUT', 'DELETE'] 


class XsSharing(object): 
    """ 
     This middleware allows cross-domain XHR using the html5 postMessage API. 


     Access-Control-Allow-Origin: http://foo.example 
     Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE 
    """ 
    def process_request(self, request): 

     if 'HTTP_ACCESS_CONTROL_REQUEST_METHOD' in request.META: 
      response = http.HttpResponse() 
      response['Access-Control-Allow-Origin'] = XS_SHARING_ALLOWED_ORIGINS 
      response['Access-Control-Allow-Methods'] = ",".join(XS_SHARING_ALLOWED_METHODS) 

      return response 

     return None 

    def process_response(self, request, response): 
     # Avoid unnecessary work 
     if response.has_header('Access-Control-Allow-Origin'): 
      return response 

     response['Access-Control-Allow-Origin'] = XS_SHARING_ALLOWED_ORIGINS 
     response['Access-Control-Allow-Methods'] = ",".join(XS_SHARING_ALLOWED_METHODS) 

     return response 
+0

Jak dostać się lokalnie do wywołania api django z twojego frontendu na dev porpuses? –

+0

Bardzo proste ... uruchamiać serwer lokalny Django i serwer frontend dev na różnych portach. Następnie możesz skonfigurować swój kątowy lub dowolny framework frontendowy, aby wywołać odpowiednio localhost: django-server-port dla danych. –

+0

Hej Calvin, w jaki sposób rozmieszczasz swój projekt dla Żydów? Używasz fabfile dla Django, ale myślę, że zastanawiam się, jak to działa w przypadku projektu dla yomanów, zwłaszcza jeśli są jakieś zadania zrzędzenia itp. – brsbilgic

Powiązane problemy