standard detail - pai-plznw4me/django-initializer GitHub Wiki
íě¤ Detail Page ę°ě´ë
What?
íě¤ ěě¸ íě´ě§
ë Target 모ë¸
record ě 보뼟 íëě íě´ě§ěě ëł´ë ę˛ ě
ëë¤.
íě¤ detail page
ë standard_detail()
ě íľí´ ěěąë ě˝ë ë° HTML ě ě미íë¤.
def standard_detail(request, id, model, callback, **cabllback_kwargs):
"""
íě¤ ëí
ěź ëˇ° í¨ěě
ëë¤. GET ěě˛ ě ëŞ¨ë¸ ě¸ě¤í´ě¤ě ě¸ëś ě 보뼟 ëł´ěŹě¤ëë¤.
:param request: HttpRequest ę°ě˛´
:param id: ëŞ¨ë¸ ě¸ě¤í´ě¤ě ěëłě
:param model: Django ëŞ¨ë¸ í´ëě¤
:param callback: ě íě ě¸ ě˝ë°ą í¨ě (í¨ě ëë ëŠěë)
:param callback_kwargs: ě˝ë°ą í¨ěě ě ëŹí ěśę° í¤ěë ě¸ěë¤
:return: HttpResponse ę°ě˛´
"""
instance = model.objects.get(id=id)
added_contents = []
if request.method == 'GET':
# íě¤ ëí
ěź: íëĄě í¸
detail_content = detail_html(request, instance)
added_contents.append(detail_content)
# ě˝ë°ą í¨ě í¸ěś
if callback:
callback(request=request, id=id, model=model, instance=instance,
detail_content=detail_content, added_contents=added_contents,
**cabllback_kwargs)
# HTML ë°í
ret_html = add_content(request, 'doctris', *added_contents)
return HttpResponse(ret_html)
elif request.method == 'POST':
raise NotImplementedError
else:
raise NotImplementedError
How to use?
def detail(request, id):
"""
íëĄě í¸ ěě¸ ě 보뼟 ëł´ěŹěŁźë 롰 í¨ěě
ëë¤.
:param request: HttpRequest ę°ě˛´
:param id: íëĄě í¸ě ěëłě
:return: HttpResponse ę°ě˛´
"""
def _callback(**kwargs):
# Detail cabllback function 기본 ě¸ě.
base_url = get_base_url(kwargs['request'].build_absolute_uri())
inst = kwargs['instance']
detail_content = kwargs['detail_content']
added_contents = kwargs['added_contents'] # added_contents is list, list is mutable!
# CRUD í
ě´ë¸ě ěěąíëë¤.
crud_projectfile_table = filtered_crud_table(base_url, ProjectFile, 'project/projectfile', project=inst)
# íëĄě í¸ ěě¸ ě¤ëŞ
ë° ě 몊 ěśę°
project_title = h_tag(2, 'íëĄě í¸ ěě¸') # h2 tag ě 몊
added_contents[0] = project_title + card_row((detail_content, 12)) # added_contents ë´ ě˛Ťë˛ě§¸ ěě : detail_content
# íëĄě í¸ ě°ěśëŹź ěě¸ ě¤ëŞ
ë° ě 몊 ěśę°
projectfile_title = h_tag(2, 'íëĄě í¸ ě°ěśëŹź ěě¸') # h2 tag ě 몊
added_contents.append( projectfile_title+card_row((crud_projectfile_table, 12)))
return standard_detail(request, id, Project, _callback)
standard_detail(request, id, Project, _callback)
ě ěěąíŠëë¤.
- íěě _callback funciton ě ě ěí´ ěŹěŠíŠëë¤. ě ěě ěěë
ěě 모ë¸
몊ëĄě add_contents
ě ěśę° íë ěě ě
ëë¤.
