[장고] 실무에서 사용했던 장고 정보 모음 ADMIN위주

Computer 비관심/Django|2018. 8. 15. 14:51
반응형

장고에 대한 정보를 얻기가 쉽지가 않지만 해외 장고 유저가 적은 글을 보면 쉽게 찾을 수 있다. 하지만 장고어드민를 제대로 사용할 수 있는 정보를 찾기는 정말 어렵다고 생각한다. 하지만 장고를 사용하는데 장고어드민을 제대로 활용하지 못 한다면 장고프레임웍의 큰 장점을 버리는 셈이다. 아래 자료들은 5개월간 장고 프로그래머로써 찾았던 어드민, 혹은 장고 관련된 실무에서 발생하는 문제 해결에 관련된 자료를 모은 것을 올린것이다.

(다 지우려 했는데 혹시라도 필요하실 분들이 있을지도 모른다는 생각에 남기게 되었습니다.)


0. 커스텀 유저 만들기

https://www.youtube.com/watch?v=0bAJV0zNWQw


1. AbstractBaseUser 대신 AbstractUser를 서브클래스함

your_app.models.py

 

from django.contrib.auth.models import AbstractUser

 

class User(AbstractUser):

        pass

 

이렇게 하면 User는 디폴트 펑션을 가지게 된다.

 

2. 유저모델 세팅

settings.py

AUTH_USER_MODEL = 'your_app.User'

 

3. 어드민에 유저모델 등록

your_app/admin.py

 

from django.contrib import admin

from django.contrib.auth.admin import UserAdmin

 

from .models import User

 

@admin.register(User)

class UserAdmin(Useradmin):

        pass

 

 

this provides a Custom User model with  all the functionality of the default User model but, with the flexibility of a Custom User model in case you ever need it in the future

 

These 10 lines of code provide immediate benefit even if you don't need User table customization

- cleanly and simply customize the User Meta option, if for example you want to add custom permission to User

 

-Easily customize User methods

 

- Easily intergate third-party package admin functionality into User admin 


1. 장고 어드민 폼 수정 - 장고 어드민에서 모델 폼으로 input을 만들때 속성을 바꾸어서 서버에서 클라이언트로 보내주는 방법을 설명하는 링크

https://stackoverflow.com/questions/910169/resize-fields-in-django-admin 



2. inversion of control (제어의 역전) -장고 프레임워크에 대해서 더 깊게 이해하고 싶으면 프레임워크 - 프레임워크는 제어의 역전과 관련이 있다 - 라는 것이 무엇인지 알아야 한다. 이 유튜브 동영상은 inversion of control 에 대해 심플하게 설명한다.

(간단히 말하면 프레임워크 안에 개발자가 코드를 작성하면 프레임워크의 흐름에 맞게 그 코드를 불러내고 실행한다. 다르게 말하면 대부분의 코드의 흐름은 프레임워크가 움직이고 특정 부분만 개발자가 제어한다.)

https://www.youtube.com/watch?v=vFzP2SaMyA0



3. get_context_data 메서드를 만들어서 데이터를 받는 대신에 템플릿에서 view를 사용해서 view클레스에 있는 변수, 메서드에 접근하기

https://reinout.vanrees.org/weblog/2014/05/19/context.html



4. django-widget-tweaks 장고 폼의 속성들을 템플릿에서 바꿀 수 있도록 도와주는 패키지

https://pypi.org/project/django-widget-tweaks/



5. 클라이언트의 json 파일 장고로 넘길 때 발생하는 문제 해결 방법 

https://stackoverflow.com/questions/10035627/django-reading-array-of-json-objects-from-querydict 

장고 서버에서 받을 경우 itemList[0][id]이런식으로 각각 나온다.

request.POST['itemList']로 받을때 none이 나온다.

 

이 문제를 해결하기 위해서는

ajax로 배열딕셔너리 데이타를 

itemList: JSON.stringify(test),

이런식으로 넘겨야 한다.

lists = json.loads(request.POST['itemList'])

이렇게 해야함



6. 장고 어드민에 커스텀 액션 버튼 만들기 - 관리자페이지에서 관련 페이지 이동 같은 기능 만들때 유용

https://medium.com/@hakibenita/how-to-add-custom-action-buttons-to-django-admin-8d266f5b0d41



7. 장고 1,2,3,4, 숫자로 페이징처리 하기 + 숫자 범위 제한하기

https://jupiny.com/2016/11/22/limit-pagination-page-numbers-range/



8.장고어드민 깊게 파헤치는 유용한 동영상

https://www.youtube.com/watch?v=5ajZMpTcUZU



9. 장고 셀렉트 필드에서 -------로 처음 필드가 나오는거 지우기

https://stackoverflow.com/questions/3935602/how-to-remove-the-unselected-item-in-a-select-and-radio-input-in-django



10. 장고 어드민 템플릿에 데이터 보내기

https://stackoverflow.com/questions/9220042/django-how-to-pass-custom-variables-to-context-to-use-in-custom-admin-template 

 

https://stackoverflow.com/questions/36405426/pass-data-to-master-template 

 

add_view.context_data.update({'to': to, 'gender_type': gender_type, 'booking_id': booking_id}) 

 

이렇게 보내는 방법도 있음



11. many to many 테이블의 IT로 정렬하기

https://stackoverflow.com/questions/10331528/django-manytomany-self-relation-order-by-the-middle-table-id 


오브젝트를 받아서 할때는 테이블명 말고 그 테이블을 칭하는 오브젝트를 적음


obj.image.through._meta.db_table+'.id') 

for i in r.image.all().order_by(r.image.through._meta.db_table+'.id')

for w in obj.image.order_by(obj.image.through._meta.db_table+'.id'): 

 

즉 클래스의 인스턴스(오브젝트들)의 이미지필드를 middle table의 아이디로 정렬 함



12. 장고 어드민 템플릿 구조 - 어드민 페이지를 상속하고 변경할 때 유용한 자료 

https://manikos.github.io/django-admin-template-structure



13. 장고 어드민 객체 계층 구조 -어드민 필드 수정할 때 좋은 자료

https://searchcode.com/codesearch/view/54684984/


adminform

fieldset 

- fileldset.classes 

- name

- description

 

line.fields

filed.filed.name

field.is_readonly

filed.errors

field.is_checkbox

filed.label_tag - 한글로 지정한것 보이게 할 수 있음.

field.contents

field.value


14. 장고에서 row sql query 사용하기

https://gist.github.com/tkrajina/11378945 



15. 모델에 종속되지 않는 어드민/url

https://stackoverflow.com/questions/11288320/new-url-on-django-admin-independent-of-the-apps



16. 장고 어드민 폼과 오브젝트

https://buxty.com/b/2010/04/django-adminform-objects-and-templates/ 



17. 장고의 흐름 (장고 플로우차트) -어쩌면  이것을 익히는 것이 장고의 기본일지도 모른다. 링크는 다른 형태의 플로우차트를 보여주니 참고 하면 좋을듯

http://hitesh.in/2009/django-flow/



18. 장고 포팅관련 링크( 왜 저장 해놨는지 모르겠다..)

https://fbdjango.wordpress.com/2014/01/27/183432721693235_635727396463763/ 




19. 어드민 쿼리셋 필터링 - 자신이 원하는 정보만 어드민에 뿌려주려면 어떻게 해야하는지 나오는 자료

https://stackoverflow.com/questions/12354099/override-default-queryset-in-django-admin 

 

겟 리스트뷰에서 쓰는것 예 

https://stackoverflow.com/questions/36474515/how-to-get-filtered-queryset-in-django-admin 



20. 자주 썼던  jquery post 형식 - 계속해서 복붙해서 썼었음


$.ajax({
type: "POST",
url: "{% url 'web:review_list' profile_id=master_profile.pk %}",
data: {
'type':'write',
'rating':$('#createPersonStar').val(),
'reviewContent':$('#reviewContent').val(),
csrfmiddlewaretoken: '{{ csrf_token }}'
},
success: function(result) {
self.review_list.unshift(result['review_list']);
}
});

return HttpResponse(json.dumps(data), content_type="application/json")

21. 장고 폼셋 튜토리얼

http://whoisnicoleharris.com/2015/01/06/implementing-django-formsets.html 

 

폼에 데이터가 미리 들어가는 방법

job = UserJob.objects.all()[0]

form = UserJobForm(request.POST or None, instance=job)

 

----------------------------

 

UserJobFormset = modelformset_factory(UserJob, form = UserjobForm)

formset = UserJobFormset(request.POST or None)  #새로운 클래스를 이니시에이트 함



22. 장고 form 기본 기능중 하나 url에 적힌 text를 폼셋에서 받을 수 있음

&to={{ original.mobile }}&text=%EA%B3%A0%EA% 



23. 장고 어드민 템플릿에 기본으로 전달되는 모델 객체 받기

템플릿에 {{original}}를 사용하면 모델의 객체를 받을 수 있음


https://stackoverflow.com/questions/4635548/accessing-the-object-in-a-django-admin-template 



24. 장고 orm 쿼리 만들때 유용한 블로그 페이지

https://milooy.wordpress.com/2016/06/23/django-models-2-making-queries/



25. 장고 admin changelist에서 컨텍스트 모델에 속한 오브젝트들 받기

https://stackoverflow.com/questions/16096528/how-can-i-get-the-object-in-django-admin-chnage-list-template 

 

{% for object in cl.result_list %}
{{ object.field명 }}
{% endfor %}

 쿼리셋형태로 오브젝트들을 받을 수 있다.


댓글()