【问题标题】:django url error in my app我的应用程序中的 django url 错误
【发布时间】:2014-06-16 12:34:07
【问题描述】:

我有一个 django 应用程序,其中有以下网址:

urlpatterns = patterns('',
    url(r'^$', views.acadprogram, name='acadprogram'),
    url(r'^(?P<program_code>\d+)/$', views.acadprogram2, name='programcode'),    
)

这就是我的观点:

def acadprogram2(request, program_code):
    name = Program_requirement_category.objects.get(name=program_code)
    descendants = name.get_descendants(include_self=True)
    return render_to_response("courses.html", {'nodes':descendants.all()}, context_instance = RequestContext(request))

在我的 html 中,我这样称呼这个网址:

<a ng-repeat="prog in programs | orderBy:'academic_program.program_title' | orderBy:'primary_program':true" href="/acadprog/{{prog.academic_program.acad_program_code}}/" ng-click="display.addprogram = false" class="list-group-item">
                {{prog.academic_program.program_title}}

但是当我点击 href 时,django 会抛出一个 url not found 错误。我哪里做错了?

【问题讨论】:

  • Angular 从"/acadprog/{{prog.academic_program.acad_program_code}}/" 为您生成的实际href 是什么?
  • 这是网址“127.0.0.1:8000/acadprog/AS.SCIENCE”。给了同样的一个只是为了检查它是否可以工作
  • ...那是你的问题,url 模式需要一个数字 (?P&lt;program_code&gt;\d+) 所以这个 url 与 Django 不匹配
  • 哦,好点..我的字符串正则表达式是什么?
  • (?P&lt;program_code&gt;.+) 将匹配任何字符中的一个或多个...查看这个很棒的网站regular-expressions.info

标签: django angularjs django-views django-urls


【解决方案1】:

根据 cmets...

您的 Angular 应用正在生成类似以下网址:“127.0.0.1:8000/acadprog/AS.SCIENCE”

这就是问题所在 - url 模式需要一个数字 (?P&lt;program_code&gt;\d+),所以这个 url 与 Django 不匹配。

您可以将网址格式更改为:

url(r'^(?P<program_code>.+)/$', views.acadprogram2, name='programcode'),

...这将匹配一个或多个任何字符。

【讨论】:

    猜你喜欢
    • 2020-07-21
    • 1970-01-01
    • 2021-06-08
    • 2023-03-24
    • 1970-01-01
    • 2020-12-10
    • 2014-08-04
    • 2020-08-16
    • 2019-07-27
    相关资源
    最近更新 更多