从 django 中的 URL 中读取一个值
Read a value from the URL in django
我正在尝试读取 url 的值并将其添加到 django 中的模型中。
基本上如果我有以下link
my_site.com/special_event/123
我怎样才能捕捉到 link (123) 的最后一部分并将其保存为我的模型的条目。对于上下文,我正在尝试在我的网站上进行抽奖,当有人扫描 QR 码时,它会将他们发送到我的网站,link 的末尾将是一个我将用于抽奖的随机数。所以在这种情况下,一个人的抽奖券将是 123。
到目前为止我有这个代码:
型号:
class RaffleEntry(models.Model):
entry_number = models.IntegerField(blank=False)
def __str__(self):
return self.entry_number
我尝试这样做的视图:
def add_entry(request, entry_number):
entry_number = RaffleEntry.objects.create()
return render(request, 'front/entry_success')
我也试过像这样向 URL 添加一个 INT 参数:
path('special_events/add_entry/<int:entry_number>', views.add_entry, name='special_events/add_entry>'),
任何帮助,甚至只是指出正确的方向,我们都将不胜感激。谢谢。
from random import randint
generated=[]
def generate_random_number(seed):
random_number=(randint(0,seed))
return str(random_number)
for i in range(0,10):
random_number=generate_random_number(9999)
if not random_number in generated:
url="my_site.com/special_event/"+random_number
url1=url
url=(url.split("/"))
print(url[len(url)-1], url1)
generated.append(random_number)
print(generated)
4887 my_site.com/special_event/4887
682 my_site.com/special_event/682
3755 my_site.com/special_event/3755
7953 my_site.com/special_event/7953
8867 my_site.com/special_event/8867
5238 my_site.com/special_event/5238
9309 my_site.com/special_event/9309
2424 my_site.com/special_event/2424
3930 my_site.com/special_event/3930
8064 my_site.com/special_event/8064
['4887', '682', '3755', '7953', '8867', '5238', '9309', '2424', '3930', '8064']
所以为了做我想做的事,我只需要更改我的 Views.py,这是代码:
def add_entry(request, entry_number):
RaffleEntry.instance = RaffleEntry.objects.create(entry_number=entry_number)
return render(request, 'front/entry_success.html', {'entry_number': entry_number})
这解决了。
我正在尝试读取 url 的值并将其添加到 django 中的模型中。
基本上如果我有以下link
my_site.com/special_event/123
我怎样才能捕捉到 link (123) 的最后一部分并将其保存为我的模型的条目。对于上下文,我正在尝试在我的网站上进行抽奖,当有人扫描 QR 码时,它会将他们发送到我的网站,link 的末尾将是一个我将用于抽奖的随机数。所以在这种情况下,一个人的抽奖券将是 123。
到目前为止我有这个代码: 型号:
class RaffleEntry(models.Model):
entry_number = models.IntegerField(blank=False)
def __str__(self):
return self.entry_number
我尝试这样做的视图:
def add_entry(request, entry_number):
entry_number = RaffleEntry.objects.create()
return render(request, 'front/entry_success')
我也试过像这样向 URL 添加一个 INT 参数:
path('special_events/add_entry/<int:entry_number>', views.add_entry, name='special_events/add_entry>'),
任何帮助,甚至只是指出正确的方向,我们都将不胜感激。谢谢。
from random import randint
generated=[]
def generate_random_number(seed):
random_number=(randint(0,seed))
return str(random_number)
for i in range(0,10):
random_number=generate_random_number(9999)
if not random_number in generated:
url="my_site.com/special_event/"+random_number
url1=url
url=(url.split("/"))
print(url[len(url)-1], url1)
generated.append(random_number)
print(generated)
4887 my_site.com/special_event/4887
682 my_site.com/special_event/682
3755 my_site.com/special_event/3755
7953 my_site.com/special_event/7953
8867 my_site.com/special_event/8867
5238 my_site.com/special_event/5238
9309 my_site.com/special_event/9309
2424 my_site.com/special_event/2424
3930 my_site.com/special_event/3930
8064 my_site.com/special_event/8064
['4887', '682', '3755', '7953', '8867', '5238', '9309', '2424', '3930', '8064']
所以为了做我想做的事,我只需要更改我的 Views.py,这是代码:
def add_entry(request, entry_number):
RaffleEntry.instance = RaffleEntry.objects.create(entry_number=entry_number)
return render(request, 'front/entry_success.html', {'entry_number': entry_number})
这解决了。