2013-02-13 26 views
14

任何人都可以得到Yeoman與Django合作? 我試圖設置它,即使我將我的grunt文件更改爲正確的路徑,它仍然使用默認值。與Django搭建Yeoman

我只搜索,但它並沒有任何人使用這種文件結構。

+0

我個人建議你使用Django的早午餐,而不是 - https://github.com/sebastibe/brunch-django-examples早午餐也是一個比較成熟的庫比自耕農。但是這並不能回答你原來的問題。因此,這裏只是一個評論。 :-) – 2013-02-13 11:35:09

回答

29

所以這是我上面做出的一個非常愚蠢的評論。 :-)

這是一個正確的迴應! Yeoman只是一個腳手架工具,可以幫助我們快速生成css,js和html文件。我正在以完全分離的方式使用它,與django完全分離。

以下是前端網站的樹形結構。

/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 

這裏是django應用程序充當純JSON Web服務的樹結構。使用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 

通過運行域名和網址Django的Web服務,如http://service.mysite.com/api/v1/和有我們的前端自耕農產生的「靜態」網站http://mysite.com根據需要調用這些API網址。

yeoman生成的AngularJS應用程序只需發送/ GETS/PUTS /刪除我們的django-tastypie API提供的API資源/ URL。

這是一個鬆散耦合的配置,您可以考慮。

但請注意,此設置正在執行「跨域API請求」。這意味着在我們的「服務器端」django應用程序中,我們需要處理CORS。

下面是一個示例中間件代碼片段,需要在django服務器端實現才能工作。

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

你如何從你的前端爲開發porpuses在本地調用django api? – 2014-06-15 03:23:00

+0

非常簡單...在不同的端口上運行Django本地服務器和前端開發服務器。然後,您可以配置您的角度或任何前端框架以相應地調用localhost:django-server-port來獲取數據。 – 2014-10-03 11:35:41

+0

嘿加爾文,你如何部署你的yeoman項目?你可以使用fab文件作爲Django,但我想知道它是如何爲yeoman項目工作的,特別是如果有一些咕嚕任務等。 – brsbilgic 2015-01-11 16:43:14