Django

    [Django & Ajax] 실시간 채팅 구현

    남들이 해놓은걸 보고 만들어볼 계획이었는데 주어진 시간에 비해 너무 어렵다. 조잡해질까봐 걱정이 되긴 하나 그렇게 복잡하지 않을 것 같아 그냥 직접 구현해보려한다. 어떻게 구현해야할까에 대한 고민 기왕이면 그나마 친숙한 Ajax를 이용하려한다. 대략적인 생각은 다음과 같다. ajax로 채팅내용을 뿌려주는 함수를 구현해놓고 일정주기로 함수를 호출해서 화면을 재구성하는 방식이다. 일정주기로 계속 호출을 한다는게 마음에 걸려서 다른 방식이 없을까 조사를 해봤는데 웹소켓말고 ajax를 이용하는 방식내에서는 어쩔 수 없는거같다. setInterval() https://developer.mozilla.org/en-US/docs/Web/API/setInterval setInterval() - Web APIs | MD..

    [django] 다음글 or 이전글로 넘어가기 구현

    팀찾기나 팀원찾기, 대회및 공모전의 detail 페이지 내에서 빠져나가지 않고 버튼을 눌러 다음 카드로 넘어갈 수 있게 하고 싶었다. 현재 URI는 /teams// 나 member/detail/ 이런식으로 만들어져 있다. 처음엔 단순히 pk+1, pk-1이런식으로 페이지를 넘길수 있게하면 되겠다 생각해서 쉽게 생각했는데 삭제된 글이 있다면 중간에 pk가 연속적이지 않을 수도 있고 팀원찾기의 경우엔 slug로 만들어놔서 그 문제도 있었다. 어떻게 할것인가? 글의 목록을 리스트로 받아오고, 현재 위치한 글의 인덱스를 찾은 다음 pk가 아닌 인덱스 번호를 움직여 페이지를 리다이렉트시킬 수 있게하면 될 것 같다. custom_tags.py 나 views.py에서 구현하면 될 듯. 시간될 때 구현하고 이어서 작성..

    [Django Error] circular dependency

    ImportError: cannot import name 'User' from partially initialized module 'accountapp.models' (most likely due to a circular import) Circular dependency 코드가 점점 커지다 보니 의존성문제가 발생하기 시작했다. models.py 사이에서 import로 얽힌 연관성이 무한하게 반복된 것이다. django가 import를 무한하게 반복하게 되어 발생하는 문제다. 특히 foreign key 관계에서 자주 발생한다. 예를 들어 방금의 경우엔 from accountapp.models import User 여기서 에러가 발생했다. 이런경우엔 지워주고 import accountapp 만 해준후에 원래..

    리다이렉션한 횟수가 너무 많습니다

    devdreamers.kr 의 사이트 리뉴얼 공지를 위해서 모든 url 에 대해 사이트이전 공지 url로 리다이렉트를 시켜려는 과정에서 문제가 발생하였다. 꿈꾸는 개발자들 팀을 찾거나 모으기 힘들 때 꿈꾸는 개발자들 devdreamers.kr django middleware에서 처리를 하려했고 아래와 같이 처리하려했었다. class RedirectMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): response = self.get_response(request) if request.environ['PATH_INFO'].startswith('/'): return r..

    Django form에 대한 정리

    HTML HTML에서 은 웹사이트를 사용하는 사용자가 데이터를 입력할 수 있도록 하고 서버로 데이터를 보내는 역할을 제공한다. 폼은 2가지 정보를 담고 있어야한다. 1) 서버로 보낼때 어디로 보낼지 2) HTTP 방법 명시. 데이터를 보낼때 HTTP 방법은 POST방식으로 보내기 되어 POST를 입력해준다. 예를 들어 아래를 보면 submit이 트리거가 되어 사용자가 Log in 버튼을 누르면 데이터가 전송이 되는 것이다. DJANGO 폼을 핸들링한다는 것은 사용자를 위해 수많은 타입의 데이터 항목들을 필요로하고 화면에 보여야하며 이런 값들은 다시 서버로 보내진다. 이후에도 값에 대한 유효성겁증을 필요로 하며 검증 이후 데이터를 처리하는 로직도 필요하다. 장고 폼은 이런 작업에 대한 단순화와 자동화를 제..

    Django DeleteView를 Template없이 사용하는 법

    문제상황: 게시물을 삭제하기위해서 deleteview를 만들었는데 삭제를 위해 삭제화면(template)으로 이동하는 대신 삭제를 확인하는 modal 창을 띄워 삭제 전 다시한번 확인하는 형태를 만들고 싶었다. 하지만 모달을 띄우는데까지는 성공했으나 삭제하기버튼을 누르면 바로 삭제되지 않고 template으로 넘어가는 문제가 생겼다. DeleteView는 POST request와 GET request에 응답해 GET request는 template을 띄우고 POST request는 삭제요청을 받는다. 아래와 같이 으로 POST request를 보낼 수 있다. {% csrf_token %} 삭제하기 그리고 views.py에서 get()을 재정의 해주었다. class TeamDeleteView(DeleteV..

    Javascript의 변수를 django DB에 넣기

    js에서 얻은 string 변수를 db에 저장하고 싶었다. [models.py] team_color = models.CharField(verbose_name='COLOR', max_length=25, default='rgba(240, 116, 137, 1)', null=True) hidden type으로 input을 만들어주고 값을 받아 해결하였다. [JS] document.getElementById("team_color").value=rgbaColor; [HTML]

    [pinterest clone (35)] WYSIWYG 적용

    WYSIWYG(위지윅): What You See Is What You Get Medium Editor 를 사용하여 WYSIWYG를 통해 게시글을 작성할 수 있도록한다. github.com/yabwe/medium-editor yabwe/medium-editor Medium.com WYSIWYG editor clone. Uses contenteditable API to implement a rich text solution. - yabwe/medium-editor github.com articleapp/forms.py from django.forms import ModelForm from django import forms from articleapp.models import Article class Art..

    [pinterest clone (34)]Field Lookup을 사용한 구독 페이지 구현

    지금까지 이렇게 구현을 많이 했었다. Model.objects.filter(pk=xxx,user=xxx) 조건(pk=xxx,user=xxx)을 잘 보면 이건 AND Function 이다. 그렇다면 OR Function은 어떻게 해야할까? SQL에서 WHERE 같은 구문은 어떻게 써야할까? TODO: 1. 유저가 구독하고 있는 프로젝트들을 확인하는 것 2. 프로젝트들 안에 있는 모든 게시글(articles)들을 가져오는 것 항상 쓰던 식이 이런 식이었는데 Articles.objects.filter(pk=xxx,user=xxx) 이런식으로 바꿀거다. (Field Lookups) Articles.objects.filter(project__in=projeccts) : 좀 더 복잡한 db쿼리를 사용자가 장고에서 ..

    [pinterest clone (33)] RedirectView를 통한 subscribeapp

    앞과정 생략 (과정에 대해 복습할땐 여기 참고) duckracoon.tistory.com/69 [pinterest clone (32)] Projectapp 구현 1. Create / Detail / List View (Update / delete) 2. Success_url to related Project 3. Login_required to CreateView 4. Model : title / description / image / created_at 개발 순서는 MVT 순서로 습관을.. duckracoon.tistory.com (M) models.py from django.contrib.auth.models import User from django.db import models # Create y..