๋ ๋ค ์ ์ด์ธ๋ ค์ ๋ง์ง์๊ฑฐ๋ฆฌ๋๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ์ด์. ๋ฌธ์์ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก:
{% block content %}
<form action="" method="get">
{{ f.form.as_p }}
<input type="submit" />
</form>
{% autopaginate f.qs 40 as filter_list %}
{% for obj in filter_list %}
{{ obj.name }} - ${{ obj.price }}<br />
{% endfor %}
{% paginate %}
{% endblock %}
ํต์ฌ์ ํ์ด์ง ๋งค๊น์ _as_ ์ธ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
์ด๊ฒ์ด ์ฅ๊ณ ์ ๋ ฌ๊ณผ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ฌธ์ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ถํํ๋ django-sorting์ ํ์ด์ง ๋งค๊น ์ ์ ๊ฐ์ผ ํ๊ณ 'as' ํค์๋๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ํ ์ _์์ต๋๋ค_:
{% autosort f.qs as actionlog %}
{% autopaginate actionlog 30 %}
http://github.com/directeur/django-sorting/issues/#issue/4 ์ ์ ์คํธ๋ฆผ์ ์ ์ถ๋์์ต๋๋ค
์์ ๋ฐฉ๋ฒ์ ์๋ํ๋ฉด ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
http://code.google.com/p/django-pagination/issues/detail?id=59#c0
๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
์ฅ๊ณ ํ์ด์ง ๋งค๊น์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด 5ํ์ด์ง์์ ํํฐ๋ฅผ ์ ์ฉํ๋ฉด ํํฐ๊ฐ "ํ์ด์ง" GET ๋ณ์๋ ์ ๋ฌํ๋ฏ๋ก ํํฐ๋ง๋ ํ์ด์ง์์ ์ด๋ฏธ 5ํ์ด์ง์ ์๋ ๊ฒ์ด๋ฏ๋ก ์๋ชป๋ ๊ฒ์ ๋๋ค. . ํํฐ๋ฅผ ์ ์ฉํ ๋ django-pagination์ด ์ฌ์ฉํ๋ ๋ณ์๋ฅผ URL์์ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์ด๊ฒ์ด ์๋ฏธ๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค ...
MD๊ฐ๋ฅดํธ,
jQuery์ jQuery Back Button & Query(BBQ) ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ํ์ด์ง ๋ณ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ฐธ์กฐ: http://benalman.com/code/projects/jquery-bbq/docs/files/jquery-ba-bbq-js.html
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery.ba-bbq.min.js"></script>
<script type="text/javascript">
// on page load complete
$(function(){
// force all filter links to return to page 1
$('#changelist-filter a').querystring('page=1');
});
</script>
์ฌ์ฉ์๊ฐ ํํฐ ๋งํฌ๋ฅผ ํด๋ฆญํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ "ํ์ด์ง"์ ๋งค๊ฐ๋ณ์๋ฅผ 1๋ก ๊ฐ์ ์ค์ ํฉ๋๋ค.
๋ด ์์์ ๋ชจ๋ ํํฐ๋ ID๊ฐ "changelist-filter"์ธ div ๋ด์ ์๋ ๋งํฌ๋ก ํ์๋ฉ๋๋ค. jQuery ์ ํ๊ธฐ๋ฅผ ์ ์ ํ๊ฒ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
mdgart, ์กฐ๋ํ ๋๋ค๋ฌ,
javascript์ ์์กดํ์ง ์๋ ์ฝ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํ์ด์ง ๋ณ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๋จ์ํ 'page' ๋งค๊ฐ๋ณ์๋ฅผ FilterSet์ ์ ๋ฌํ์ง ๋ง์ญ์์ค. ์๋ฅผ ๋ค์ด ๋ฌธ์์ ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
def product_list(์์ฒญ):
๋ฐ์ดํฐ = request.GET.copy()
๋ฐ์ดํฐ์ 'ํ์ด์ง'์ธ ๊ฒฝ์ฐ:
๋ธ ๋ฐ์ดํฐ['ํ์ด์ง']
f = ProductFilter(๋ฐ์ดํฐ, queryset=Product.objects.all())
return render_to_response('my_app/template.html', {'ํํฐ': f})
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋งค์ฐ ๊น๋ํ ์๋ฃจ์ richardbarran, ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฌ ํด์. django-pagination์ ๋ํด ์ค๋ช
ํ๊ธฐ ์ํด ๋ฌธ์๋ฅผ ํจ์นํ๋ ค๊ณ ์๊ฐํ์ง๋ง ์์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ฌธ์์ ํ์์ ๋ฌด์์
๋๊น? :-(
docutils๊ฐ ๊ทธ๊ฒ์ ๋ํด ๋ถํํ๊ธฐ ๋๋ฌธ์ (์ ์ด๋ ๋ด ์ปดํจํฐ์์๋) ์ฒ์์ด ์๋๋๋ค. ์ด๋ค ์ ์?
Richard, ์ฒ์์ด์ง๋ง sphinx(http://sphinx.pocoo.org/)๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
autopaginate ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ์๊ฐ "'fooFilter' ์ ํ์ ๊ฐ์ฒด์ len()์ด ์์ต๋๋ค" ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ๋ฐ๋ณตํ๊ณ django-pagination์ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ํ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฒฌ๋ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ค๊ณ ํ์ ํฉ๋๋ค. ์ด๋ป๊ฒ ๊ณ ์น ์ ์์ต๋๊น? ๊ฐ์ฌ ํด์!
ํ๋ฅญํฉ๋๋ค. ๋๋ถ์ ๋ง์ ์๊ฐ์ ์ ์ฝํ ์ ์์์ต๋๋ค.
ํจ๊ป ์๋ํ๋ django-pagination ๋ฐ django-sorting์ ๋ํ github ๋งํฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น? ์ ๋ ์ด๋ฌํ ๋ฆฌํฌ์งํ ๋ฆฌ ์ค ์ผ๋ถ๋ฅผ ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ๋๋ ์ป๋๋ค :
/ads/search/์ TemplateSyntaxError
๋ ๋๋งํ๋ ๋์ VariableDoesNotExist ๋ฐ๊ฒฌ: u'[{}, {\'csrf_token\' ...์์ ํค [sorted_objects] ์กฐํ ์คํจ
์ด ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ
{% autosort filter.qs as sorted_objects %}
{% autopaginate sorted_objects 10 as object_list %}
{% for object in object_list %}
{{ object }}
{% endfor %}
{% paginate %}
<ul>
<li>{% anchor price "First Field" %}</li>
<li>{% anchor surface "Other Field" %}</li>
</ul>
๊ฐ์ฌ ํด์ !
์ฃ์กํฉ๋๋ค. ์ ๋ django-sorting์ ์ฌ์ฉํ์ง ์์์ผ๋ฏ๋ก ์ค์ ๋ก ๋์์ด ๋ ์ ์์ต๋๋ค.
ํ์ด์ ๋น๋๋ค!
์ฃผ์
ํจ๊ป ์๋ํ๋ django-pagination ๋ฐ django-sorting์ ๋ํ github ๋งํฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น? ์ ๋ ์ด๋ฌํ ๋ฆฌํฌ์งํ ๋ฆฌ ์ค ์ผ๋ถ๋ฅผ ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค. ๋๋ ์ป๋๋ค :
/ads/search/์ TemplateSyntaxError
๋ ๋๋งํ๋ ๋์ VariableDoesNotExist ๋ฐ๊ฒฌ: u'[{}, {\'csrf_token\' ...์์ ํค [sorted_objects] ์กฐํ ์คํจ์ด ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ
{% autosort filter.qs as sorted_objects %} {% autopaginate sorted_objects 10 as object_list %} {% for object in object_list %} {{ object }} {% endfor %} {% paginate %} <ul> <li>{% anchor price "First Field" %}</li> <li>{% anchor surface "Other Field" %}</li> </ul>
๊ฐ์ฌ ํด์ !
๊ทธ๋์ ๋ค์์ ์ด์ ์ง๋ฌธ์ ๋ํ ์๋ํ๋ pip ์๊ตฌ ์ฌํญ์ ์์ ๋๋ค.
์ฅ๊ณ ํํฐ==0.5.3
์ฅ๊ณ ํ์ด์ง ๋งค๊น==1.0.7
-e git://github.com/lukeman/django-sorting.git#egg =django_sorting
๋ด ํฌํฌ๋ฅผ ์ฌ์ฉํด๋ณด์ญ์์ค.
https://github.com/camilonova/django-sorting
์ผ๋ฐ ๋ณด๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ django-filter๋ก ํ์ด์ง ๋งค๊น ๋ฐ ์ ๋ ฌ์ ์ฌ์ฉํ ์ ์๋์ง ์๋ ์ฌ๋์ด ์์ต๋๊น? ์ด ์์์ ์ผ๋ฐ ๋ณด๊ธฐ ๋ฐฉ๋ฒ์ด ์ฌ์ฉ๋์ง ์์์ ์ ์ ์์ต๋๋ค.
๊ทํ์ ์ง๋ฌธ์ ์ดํดํ๋ค๋ฉด ๊ฐ๋ฅํฉ๋๋ค: https://github.com/ouhouhsami/django-geoads/blob/master/geoads/views.py
๊ด์ฌ ์๋ ์ฌ๋์ด ์์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ django-sorter๋ผ๊ณ ํ๋ django-sorter๋ฅผ ํจ์ฌ ๋ ์๋ฒฝํ๊ฒ ๋์ฒดํ๋ ๊ธ์ ์์ฑํ์ต๋๋ค. http://django-sorter.readthedocs.org/
์ด์ ํธ๋์ปค๋ฅผ ์ดํดํ๊ธฐ ์ํ ์ผํ์ผ๋ก ์ด๋ฒ ์ด์๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ฒ ์ต๋๋ค. ๋ง์ง๋ง ๋๊ธ ์ดํ๋ก 2๋ ์ด ๋์์ต๋๋ค.
ํ์ฌ ํ์ด์ง ๋งค๊น/์ ๋ ฌ ์๋ฃจ์ ๊ณผ์ ํตํฉ์ ๋ณด์ฌ์ฃผ๋ ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธํ๋ ํ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด๋ ค๋ ์ฌ๋์ด ์๋ค๋ฉด ์ ๋ง ๊ธฐ์๊ฒ ๊ฒํ ํ๊ณ ์ถ์ง๋ง, ๋ค์ ๋ฒ์ _IRL_์ด ์ฌ ๋ ๋ค์ ๋์์ฌ ๊ฒ์ ๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ์๋ฏธ๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ฐ์ฌ ํด์!!!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.