我想要獲取特定的頁面url並自動縮短url並將其顯示給用戶。在編寫下面的代碼後,它不會縮短,也不會顯示錯誤。在Django模板中獲取頁面url並縮短鏈接
Models.py
_char_map = string.ascii_letters+string.digits
def index_to_char(sequence):
return "".join([_char_map[x] for x in sequence])
class Arts(models.Model):
user=models.ForeignKey(User)
title=models.CharField(max_length=100)
picture_1=models.ImageField(upload_to="photos")
picture_2=models.ImageField(upload_to="photos", null=True,blank=True)
picture_3=models.ImageField(upload_to="photos", null=True,blank=True)
description=HTMLField(null=True,blank=True)
slug=models.SlugField(max_length=100, unique=True)
pub_date=models.DateTimeField()
def __unicode__(self):
return u'%s' %(self.title)
def get_short_id(self):
_id=self.id
digits=[]
while _id > 0:
rem= _id % 62
digits.append(rem)
_id /=62
digits.reverse()
return index_to_char(digits)
@staticmethod
def decode_id(string):
i=0
for c in string:
i=i*64+_char_map.index(c)
return i
def save(self, *args, **kwargs):
if not self.id:
self.slug=slugify(self.title)
super(Arts,self).save(*args,**kwargs)
Views.py
我想縮短鏈接
def artdetail(request,arts_id,slug):
post=Arts.objects.get(id=arts_id,slug=slug)
link_db=models.Arts()
currentUrl = request.build_absolute_uri(link_db.get_short_id())
return render_to_response('postdetail.html',{'post':post, ' Arts':Arts,'currentUrl':currentUrl},context_instance=RequestContext(request))
模板
{{currentUrl}}
的頁面,這是最好的方式去解決它?我錯過了什麼?
謝謝。在測試您的代碼後,它沒有正確縮短網址。頁面網址爲:http://127.0.0.1:8000/artlyf/1/topman/縮短後,它會在模板上打印出此網址:http://127.0.0.1:8000/artlyf/1/topman/b任何想法? – picomon
這是一個完全不同的問題:) –
這是我的urls.py:url(r'^artlyf/(?P \ d +)/(?P [ - \ d \ w] +)/ $',' artapp.views.artdetail',name ='artdetail'), –
picomon