【问题标题】:Django TypeError when passing arguments via URL通过 URL 传递参数时出现 Django TypeError
【发布时间】:2011-10-07 06:29:31
【问题描述】:

您好,我在 Django(最新版本)中收到以下错误:

TypeError at /post/1/
post() got an unexpected keyword argument 'post_id'

当我点击主页上的链接查看帖子时会发生这种情况,我试图传递帖子的 ID(我使用的是默认的 [隐藏] 主键,而不是我自己的自定义主键)


这就是我的 urls.py 在索引和帖子页面中的样子:

from django.conf.urls.defaults import patterns, include, url
from journal.models import Post


# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('journal.views',
    (r'^$', 'index'),
    (r'^post/(?P<id>\d+)/$', 'post'),

这是我的views.py:

from django.http import HttpResponse
from journal.models import Post
from django.template import Context, loader
import os

# Hardcoded Varibles
SITE_ROOT = os.path.join(os.path.dirname(__file__))

# Create your views here.
def index(request):
    latest_post_list = Post.objects.all().order_by('-pub_date')[:10]
    t = loader.get_template(os.path.join(SITE_ROOT, 'templates', 'index.html'))
    c = Context({
    'latest_post_list': latest_post_list,
    })
    return HttpResponse(t.render(c))

def post(request, id):
    return HttpResponse("Hello this is post %" %(post_id))

【问题讨论】:

    标签: python django python-2.7 django-1.3


    【解决方案1】:

    改变

    def post(request, id):
        return HttpResponse("Hello this is post %" %(post_id))
    

    def post(request, id):
        return HttpResponse("Hello this is post %s" % id)
    

    而且我怀疑它会更好一点!

    【讨论】:

    • 啊,是的,我之前将它作为“id”,但是我一直缺少 %s 中的 s,谢谢。
    • 看起来你忘记了最后的 %s?在您的原件中您忘记了它,所以也许您在尝试上述操作时没有更改它?
    猜你喜欢
    • 2018-09-06
    • 2010-11-18
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多