0

次のようなURLを取るjsonクエリのために、urls.pyに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 に収まるようにしたいだけです。

ありがとう!

4

1 に答える 1

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

これは、それが得るのと同じくらい厳密です。

基本的には次のとおりです。

  • 数字で始まることを確認してください

  • 番号が最大 5 桁の長さであることを確認します (これが誰に送信されるか不明です。必要に応じて {1,5} を調整してください)

  • コンマ、スペース、ストリート名が続くことを確認してください

  • コンマ、スペース、都市名が続くことを確認してください

  • コンマ、状態が続き、状態で終わることを確認してください

于 2013-06-13T09:19:12.683 に答える