까먹기전에 포스팅
장고에서보면 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>
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,))