正则表达式Url conf Django

时间:2010-08-02 08:47:39

标签: django

我正在尝试进行以下设置。

  1. Flatpages:我的所有静态网站都在哪里(例如:about,contact,..)

  2. 动态页面:

  3. 在这里,我尝试从其中一个Flatpages链接到一个起始站点:

    我试过的这个起始网站的url conf中的正则表达式是:

    (r'^myapp/start/(\d+)/$', 'mysite.views.def_that_should_just_show_hello_world'),
    

    在我的观点中:

    def def_that_should_just_show_hello_world(request):
     return HttpResponse("Hello experiment world")
    

    如果我去

    / myapp /我得到404:没有FlatPage匹配给定的查询。 / myapp / start /我得到404:没有FlatPage匹配给定的查询。 / myapp / start / 1我得到

    异常类型:TypeError def_that_should_just_show_hello_world只需1个参数(给定2个)

    我想在这个设置中,我会在每个页面上得到“Hello experiment world”。

    我哪里出错了? 我不理解正则表达式中的多个站点方法。 在所有这些网站上打印hello world我需要做什么? 然后,我需要做什么才能在所有这些网站上显示1张图片?

    非常感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

正则表达式中有一个匹配的组 - (\d+)位。

这需要在该视图的网址末尾显示一个或多个数字字符。如果您未在末尾包含该数字,则此正则表达式将与该网址不匹配。 (url匹配与任何其他正则表达式匹配一样)。

当您确实包含该号码时,例如。 /myapp/start/1你有另一个问题。由于存在匹配组,括号中url的部分将作为另一个参数传递给视图。视图始终作为第一个参数传递请求,但在这种情况下,(\d+)匹配的“1”作为第二个参数提供。这就是为什么你要在这种情况下使用TypeError。

Django的文档有一个lot of information on how url dispatching work,读过来看看是否有意义!

答案 1 :(得分:0)

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


   urlpatterns = [
       url(r'^$',views.method_name,name ='index'),
       path('admin/', admin.site.urls),