2017-01-25 22 views
1

こと:あなたが「のような美しさに遭遇している可能性がウェブ上であなたの時間の今なお、Djangoのドキュメントでキー=値&ジャンゴで

ME2/Sites/dirmod.asp?sid = & type = gen & mod = Core + Pages & gid = A6CD4967199A42D9B65B1B "となります。あなたはDjangoがそれよりはるかにエレガントなURLパターンを私たちに許してくれるのを知ってうれしいです。

ただし、このパターンを念頭に置いてクエリ文字列を渡そうとしています。 djangoのurls.pyの内部でkey = valueのペアを渡す方法を教えてください。

また、これはAngularとDjangoを併用したプロジェクトです。

現在、私の角のパターンがクエリ文字列 で出ています。 http://localhost/data/?key1=value1&key2=value2

$ http.postの取り扱いに関する詳細については、私は何かアドバイスを受け取ります。

はUPDATE:

はここでうまくいけば、これはもう少し便利ですここで私のVIEWS.PY

#THREE PARAMETERS: storyElementName, facet, variants(can be multiple) 
def storyElements_getOrCreate(request, storyElementName, facet, variants): 
contData = lsContinuityData.ContinuityData() 
if request.method == "POST": 
    storyElementName = request.POST.get("storyElementName") 
    facet = request.POST.get("facet") 
    for key in request.POST: 
     variants = request.POST.getlist("variants") 
    storyElement = contData.storyElement(storyElementName, facet=facet, variants=variants) 
    return HttpResponse(json.dumps(storyElementName, facet, variants), content_type="application/json") 
else: 
    storyElementGroups = contData.getStoryElements() 
    if len(storyElementGroups): 
     storyElements = [storyElement.toJSON() for storyElement in storyElementGroups] 
     return HttpResponse(json.dumps(storyElements), content_type="application/json") 

である私の角度コントローラ

function addStoryElement(storyElementName, facet, variants){ 
    seParams = {storyElementName: vm.storyElementName, facet: vm.facet, variants: vm.variants} 
    $http({ 
     url: 'http://localhost:8000/lsContinuity/storyelements/', 
     method: "POST", 
     params: seParams 
    }) 

です。私は複数のパラメータを渡していますが、私はこれを間違っているかもしれません。

+0

私はあなたがについて尋ねているのか理解していない、あなたの質問の開始を約パラメータを取得し、その後、あなたのコードは関連しますデータを投稿するには、あなたが求めている実際の質問は何ですか? – Sayse

答えて

0

定義済みの任意のURLで実行できます。

ので、http://localhost/data/に対応したビューでは、のは、DataView(CBVを想定)としましょう:

class DataView(View): 

    def get(self, request, *args, **kwargs): 

     # To get key=value params 
     params = request.GET # This should return a dict {'key': 'value'} 
0

を私が望ましいとDjangoの精神で、よりどのようになるかと思いますが、これを所有するためにあなたのURLのためになりますパターン:urls.py

url(r'^data/?P<val1>\d+/?P<val2>\d+$', 'Project.views.my_project.page', name="my_project") 

次にあなたがこの

def page(request, val1, val2): 
    record1 = MyModel.objects.get(key1=val1) 
    record2 = MyModel.objects.get(key2=val2) 

    ... 

d+のようなものが1つ以上の小数点以下の桁数を受け取り、あなたのビューで値を取得することができます。

あなたのURLは、私が間違っていたものを実現しているので、

http://localhost/data/val1/val2 
0

のように渡された値を持つことになります。

$ httpのPOSTを使用してAngularJsからデータを送信するとき、content-type = "application/json"のデータをサーバーに送信します。 Djangoはその形式を理解していませんでした。

ソリューションは、次の設定を使用することにより、Content-Typeヘッダを変更することです:

app.config(['$httpProvider', function ($httpProvider) { 
    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';}]); 
関連する問題