모델 :NoReverseMatch 때 사용 get_absolute_url()
class Band(models.Model):
B_Name = models.CharField(max_length=30, primary_key=True)
Country = models.CharField(max_length=30)
genre = models.ForeignKey(Genre)
imageband = models.ImageField(upload_to='images/band')
def __unicode__(self):
return self.B_Name
@models.permalink
def get_absolute_url(self):
return ('thu',(), {
'B_Name': self.B_Name})
URL을 :
url(r'^genre/(\d+)/$', 'genre', name="genre"),
url(r'^thu/(?P<B_Name>[-\w]+)/$', 'thu', name='thu'),
보기 :
def genre(request, url):
template = 'genre/genre.html'
if url=='1':
tmp = Band.objects.raw('SELECT B_Name, Country FROM data_band WHERE genre_id=%s', ...)
if ....
return render_to_response(template,{'tmp':tmp})
def thu(request):
template = 'genre/thu.html'
tmp = Band.objects.raw('SELECT B_Name, genre FROM data_band')
return render_to_response(template,{'tmp':tmp})
내가 B_Name = "AB"는, 일하고있어하지만 난을 사용하는 경우 B_Name = "AB"를 사용하면 오류가 발생합니다.
NoReverseMatch : Reverse for 'thu'인수가 '()'이고 키워드 인수가 { 'B_Name': u'A B '}'이 (가) 없습니다.
왜 표준'filter' 호출보다는'raw' 쿼리를 사용하고 있습니까? –
내 습관이야, 필터와 원료가 다른거야? – rocky
@skidrow :'filter'는 데이터베이스에 독립적 인 Django DBAPI를 사용하는 반면,'raw'는 데이터베이스를 직접 쿼리하기 때문에, 현재이 순간에 앱이 사용하는 특정 데이터베이스에 본질적으로 의존합니다 . 다른 DB 플랫폼으로 전환해야한다면,'raw' 쿼리의 일부 또는 전부가 중단 될 수 있습니다. 또한'filter' (및 나머지 DBAPI)를 사용하면 코드를보다 읽기 쉽고 유지 보수하기가 쉬워집니다. 일반적으로 '원시'는 '그 밖의 아무것도하지 않음'시나리오에만 해당됩니다. –