2017-07-24 68 views
2

我尝试打开路径时出现此错误。它需要一个PK在我的def,我插入它,但问题仍然存在。如果有人能帮忙,我会很多欠你的!Django错误---索引()缺少1所需的位置参数:'pk'

这是错误我在浏览器:

TypeError at /batches/ 
index() missing 1 required positional argument: 'pk' 
Request Method: GET 
Request URL: http://127.0.0.1:8000/batches/ 
Django Version: 1.11.1 
Exception Type: TypeError 
Exception Value:  
index() missing 1 required positional argument: 'pk' 
Exception Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/core/handlers/base.py in _get_response, line 185 
Python Executable: /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 
Python Version: 3.6.1 
Python Path:  
['/Users/cohen/Documents/project/sanctions', 
'/Users/cohen/Documents/project/sanctions', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages', 
'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/PyObjC'] 
Server time: Mon, 24 Jul 2017 10:47:02 +0000 

我分批

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    # /batches/ 
    url(r'^$', views.index, name='index'), 

    # /batches/2 
    url(r'^(?P<batches_id>[0-9]+)/$',views.detail, name="detail"), 

    # businessname/1 
    url(r'^(?P<businessname_id>[0-9]+)/$',views.index_businessname, name="detail_businessname"), 

    # individuals/1 
    url(r'^(?P<individuals_id>[0-9]+)/$', views.index_individuals, name="detail_individuals"), 
] 

URL和意见:

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 
from .models import BusinessName 
from .models import Individuals 
from .models import Batches 

from django.shortcuts import render 
from django.http import HttpResponse 

# Create your views here. 
def index(request, pk): 
    all_Batches = Batches.objects.all() 
    html = '' 
    for batch in all_Batches: 
     url = '/batches/' + str(batch.id) + '/' 
     html += '<a href="#"' + url + '">' + str(batch.BatchNumber)+ '</a><br>' 
    return HttpResponse(html) 

def detail(request, batch_id): 
    return HttpResponse("<h2>Details for Batches ID:" + str(batch_id) + "</h2") 


def index_businessname(request): 
    all_BusinessNames = BusinessName.objects.all() 
    html = '' 
    for bn in all_BusinessNames: 
     url = '/businessname/' + str(bn.id) + '/' 
     html += '<a href="#"' + url + '">' + bn.FullName + '</a><br>' 
    return HttpResponse(html) 

def detail_businessnames(request, bn_id): 
    return HttpResponse("<h2>Details for Business Names ID:" + str(bn_id) + "</h2") 

def index_individuals(request): 
    all_individuals = Individuals.objects.all() 
    html = '' 
    for i in all_individuals: 
     url = '/individuals/' + str(i.id) + '/' 
     html += '<a href="#"' + url + '">' + i.FullName + '</a><br>' 
    return HttpResponse(html) 


def detail_individuals(request, i_id): 
    return HttpResponse("<h2>Details for Individual Names ID:" + str(i_id)+ "</h2") 

谢谢你在前进, 科恩

+0

查看预计'pk'从url传递,但你的url模式不包括'pk'。 – anuragal

回答

3

索引视图有两个参数。您只写的网址为request。您必须给pk作为输入,就像detail URL

+0

谢谢Ananthu! – Cohen

1

您的网址/批次/没有参数。所以, 你的索引视图应

def index(request): 
    # ...... 
+0

谢谢哈伦! – Cohen

3

在您的网址包含pk

更改您的网址是这样,

url(r'(?P<pk>\d+)/$', views.index, name='index'), 

代替,

# /batches/ 

url(r'^$', views.index, name='index'), 

OR,

,如果你不及格pk到的意见,然后从index视图删除pk在下面显示。

def index(request): 
    all_Batches = Batches.objects.all() 
    html = '' 
    for batch in all_Batches: 
     url = '/batches/' + str(batch.id) + '/' 
     html += '<a href="#"' + url + '">' + str(batch.BatchNumber)+ '</a><br>' 
    return HttpResponse(html) 
+0

谢谢Emil! – Cohen

相关问题