django createview

puing·2021년 1월 7일
0

web_dev

목록 보기
2/3

까먹기전에 포스팅
장고에서보면 generice view 들이 여러가지 있다.
그 중에 createview 가 이해가 잘 안갔는데.. 왜냐하면 어디에 쓰냐? 왜 써야하나? 이런 생각이 들었다.
createview 는 객체를 생성해주는 view 다.

솔직히 난 장고로 웹페이지 만들면서 createview 로 객체를 생성해주는 방법말고 다른 방법을 쓰긴했다.(fbv 에서 create_user 로 User 객체를 생성함)

Createview 는 객체 생성해주는 폼을 보여주는 view 인데, 간단한 예로는 아래와 같다.

view.py

class AuthorCreate(CreateView):
    model = Author
    fields = ['name']

템플렛

   <form method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Save">
</form>

django documnet

field 를 입력할 수 있는 폼을 html 에서 입력받는다. 사용자가 입력한 데이터대로 객체가 생성되는 것. 여기서 객체라는게 확실히 눈에 보이는게 아니라 되게 헷갈렸는데, 쉽게 생각해서..

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

    def __str__(self):
        return self.name

Blog 라는 모델이 있을때,

>>> b = Blog(name='Beatles Blog', tagline='All the latest Beatles news.')
>>> b.save()

위와 같이 객체를 생성해주는 것이다.
위 예제를 보고나서 이해가 갔음.
객체를 생성해준다는 개념은 이해가 갔고, 이제 돌아와서 createview 를 사용하는 이유는 객체 생성해주는 방법중의 하나라고 생각하면 된다. 난 fbv 방식으로 User 모델을 사용해서 create_user 함수를 통해 User 객체를 생성했는데 createview 를 사용해서 field 만들고 템플릿에서 사용자가 입력한 데이터로 객체를 생성하게 해줘도 된다.(물론 createview 에서 User 객체를 생성해줘도 됨)

createview 에서 생성한 객체에 접근하려면..

    return reverse('offerta_create',args=(self.object.id,))
profile
happy hacking

0개의 댓글