用于“地址”的Django URL正则表达式

时间:2013-06-13 05:56:38

标签: regex django django-urls

我正在尝试在我的urls.py中写一个url正则表达式来获取一个json查询,它将采用这样的URL:

http://localhost:8000/structures/hydrants/3/json?address=100+Washington+Road,+Sacramento,+CA

并将其指向视图:

def hydrant_json(request, hydrant_address):
    hydrant = Hydrant.objects.filter(address = hydrant_address)
    data = [hydrant.json()]
    return HttpResponse(json.dumps(data), content_type='application/json')

地址定义如下:

class Address(models.Model):
    class Meta:
        verbose_name_plural = "addresses"
    street_num = models.IntegerField(default=0)
    street = models.CharField(max_length=200)
    city = models.CharField(max_length=200)
    state = models.CharField(max_length=200)
    def json(self):
        fields = ('street_num', 'street', 'city', 'state')
        return {
            'street_num': str(self.street_num),
            'street': str(self.street),
            'city': str(self.city),
            'state': str(self.state)
        }
    def __unicode__(self):
        return str(self.street_num) + ' ' + self.street + ', ' + self.city + ', ' + self.state

和hydrant.json()工作,视图方面的一切都是花花公子。我只是希望正则表达式采用上面显示的格式的确切地址,适合查询URL。

谢谢!

1 个答案:

答案 0 :(得分:0)

r'(?<address>^\d{1,5}\s[a-zA-z\s]+,\s[a-zA-z]+,\s[A-Z]{,2}$)'

这和它一样严格。

基本上它的作用是:

  • 确保以数字

  • 开头
  • 确保该号码的长度最多为5位数(不知道可以使用多长时间,如果需要,请调整{1,5}

  • 确保逗号,空格和街道名称跟随

  • 确保逗号,空格和城市名称如下

  • 确保逗号,状态跟随,并以状态

  • 结束