2017-01-25 9 views
1

В Джанго документации отмечается, что:как передать строки запроса в urls.py с ключом = значение & в Джанго

Сейчас в свое время в Интернете вы можете встретить таких красавиц, как « ME2/Сайты/dirmod.asp? Sid = & type = gen & mod = Core + Pages & gid = A6CD4967199A42D9B65B1B ". Вы будете рады узнать, что Django позволяет нам гораздо более элегантные шаблоны URL-адресов, чем это.

Однако, я пытаюсь передать строки запроса с учетом этого шаблона. Как можно пропустить пару ключей = значение так, чтобы внутри django's urls.py

Также обратите внимание, что это для проекта, использующего Angular и Django вместе.

В настоящее время мои угловые узоры выходят в строке запроса I.E. 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 (при условии, ОЦК):

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

Я думаю, что было бы предпочтительнее и более в духе Джанго, будет для ваших 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+ принимает один или несколько десятичных цифр.

Ваш URL будет иметь пропущенные значения как так

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

я понял, что был неправ.

При отправке данных из AngularJs с помощью POST $ http он отправляет данные с помощью content-type = "application/json" на сервер. Джанго не понимал этого формата.

Решение заключается в изменении заголовка типа содержимого с помощью следующей конфигурации:

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