【问题标题】:Django to conf a url that contains a numberDjango 配置一个包含数字的 url
【发布时间】:2013-09-22 11:54:24
【问题描述】:

我想制作一个函数来判断来自 url 的数字是奇数还是偶数。判断的代码如下:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from django.http import HttpResponse,Http404
import datetime

def judge(reqest, number):
    try:
        number = int(number)
    except ValueError:
        raise Http404() 
    if number % 2 == 0:
        html = "<html><body>%d is even!</body></html>" % (number)
    else:
        html = "<html><body>%d is odd!</body></html>" % (number)
    return HttpResponse(html)

现在,我被困在url.py,我不知道这样的编辑是否可行:

from django.conf.urls.defaults import *
from views import *

urlpatterns = patterns('',
   #(r'^$', time_now),
   (r'^number/(.+)$', judge), # we just want the number in the url, not more or less
)

但我也想处理空输入,但每次我尝试这个时页面都会给出"Nothing input":

def judge(reqest, number):
    if number is None:
        html = "nothing input!"
        return HttpResponse(html)
    try:
        number = int(number)
    except ValueError:
        raise Http404() 
    if number % 2 == 0:
        html = "<html><body>%d is even!</body></html>" % (number)
    else:
        html = "<html><body>%d is odd!</body></html>" % (number)
    return HttpResponse(html)

我该如何解决这个问题?

【问题讨论】:

    标签: python django url


    【解决方案1】:

    这样定义两个url

    urls.py

    from views import *
    
    urlpatterns = patterns('',
       #(r'^$', time_now),
       (r'^number/(.+)/$', judge),
       (r'^number/$', judge),
    )
    

    设置默认值

    views.py

    def judge(reqest, number=None):
        ...
    

    【讨论】:

    • 哦,这正是我想要的,非常感谢!
    • err... 我不太确定我的正则表达式知识是否适用于这里,但一个(r'^number/(.*)/$', judge) 就不能解决问题吗?
    猜你喜欢
    • 2015-05-31
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2017-05-08
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    相关资源
    最近更新 更多