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
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. :-) –