替换Django的URL中的点

时间:2015-04-15 18:27:16

标签: python django

我正在创建一个Web应用程序,我需要在Django中将IP地址作为URL参数。但是,我想删除这些点,因为它们在URL中无效。也许用破折号代替它们?这样做有什么好办法吗?

这是我的模特:

models.py

class Machine(models.Model):
    ip = models.CharField(max_length=15, unique=True) #255.255.255.255
    name = models.CharField(max_length=16, default="") #SSH-Server
    number_of_threats = models.IntegerField(default=0)

以下是我的观点:

def machine(request, ip):
    print machine_ip
    ip = Machine.objects.get(ip=ip)
    context_dict['machine_ip'] = machine_ip
    return render(request, 'topology/machine.html', context_dict)

我现在的格式是:/machine/192.168.1.1 我想要的格式是:/ machine / 192-168-1-1(或类似的)

我看了Slugify,因为它有类似的功能,但它看起来不会像点一样。

有关良好做法的任何建议吗?

1 个答案:

答案 0 :(得分:2)

def machine(request, ip):
    print machine_ip
    ip = Machine.objects.get(ip=ip)
    context_dict['machine_ip'] = machine_ip.replace('.', '-')
    return render(request, 'topology/machine.html', context_dict)

并在urls.py中创建参数ip

(?P<ip>.*)