묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결장고 설계철학으로 시작하는 파이썬 장고 입문
CreateView에 html 코드가 어떻게 적용되는 걸까요?
안녕하세요, 수강생 김영빈입니다!강의 4-3. django-bootstrap5 적용 및 post_new 뷰 구현과 관련하여 질문이 있습니다.bootstrap을 활용하여 포스팅을 위한 form을 구성하는 와중에 app.views.py에서 클래스 기반 뷰인 post_new를 활용해 form을 사용자에게 전달하고, 사용자가 입력한 내용을 DB에도 저장시킵니다.이때 view의 함수 기반 뷰인 index나 post_detail과는 다르게 return값에 html 템플릿 인수를 적용하지 않습니다. 그런데 어떻게 연결이 되어 사용자에게 html 코드를 보여줄 수 있는 것일까요?제가 유추해보았을 때는 form_class의 인자로 넣은 PostForm을 활용해 app.forms.py의 PostForm 클래스를 참조하여, form object를 생성하고, 이 form object를 post_form의 form인자로 받아서 html 코드를 출력하는 것으로 생각했습니다만 확실하지가 않아서 문의드립니다.CreateView가 매커니즘에 대한 이해가 크지 않아서 혼란이 발생하는 것 같습니다. 어떻게 이해하면 될지, 또한 CreateView의 소스코드는 어디서 볼 수 있는지 또한 함께 질문 드립니다!
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
안녕하세요 선생님!!!!!! createview form_valid에 대해서 질문드립니다!!
안녕하세요!!!!!!! 선생님 스승님!!!!!!!!!!!!!!!!!!♥♥♥♥♥ createview에 대하여 질문드릴게 있습니다!!!!!!!!!! 먼저 설계한 모델 간단히 보여드리면! (나머진 길어서 생략) 위에는 driver모델이구요! 위는 driver 모델과 1대1 외래키 관계인 Transfer모델입니다. 제가 원하는 구현은 ※ 위는 for문으로 driver모델을 루프를돌면서 template에 표현했습니다. 위의 나온 표대로 키값이 있고 (키값 = driver모델의 driver_pk 필드입니다) 이직 날짜가 아직없는(tranfer모델이 아직 생성되지 않은) 키값에 대해서는 새롭게 tranfer모델을 생성하고 싶습니다!!! (이미 tranfer모델이 있는 driver모델에 대해서는 저렇게 이직날짜가 나와있도록 표현했습니다) 위 그림 나온대로 정해진 키값에 대해서만 tranfer모델을 create하고 싶은데 위 사진에 보시면 driver모델이 선택할 수 있도록 활성화가 되있습니다. (위는 tranfer modelform을 표현한것입니다!) 즉 위 사진에 나온 키값이 '오로라1351 ' 행에 있는 이직create 버튼(회색버튼)을 누르면 '오로라1351'키값(Driver) 은 이미 고정되서 수정할수 없도록 disable상태가 되어있고 나머지만 이직날짜, 이직횟수등만 create해서 저장하고 싶습니다!! (따로 구현한 updateview는 동작이 잘됩니다!!) 제생각엔 위와 같이 form_valid를 건들면 될것 같은데 (물론 제생각입니다) 어떻게 하면 좋을까요!!?? 존경하고 감사합니다!!!!
-
미해결파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트
django createview에서 다중 이미지 올릴 수 있도록 코드 좀 봐주실수 있을까요??
안녕하세요?? django에 입문한지 얼마되지 않은 사람입니다~ 클론 코딩 위주로 듣다가 기초가 부족한것 같아서 파이썬/장고 웹서비스 개발 강의를 수강하게 되었습니다 좋은 강의 항상 감사드립니다!! 이전에 짰던 코드는 article을 create하는 page에서 image를 올리는 것인데 image를 1개밖에 못올리도록 되어 있어서요 여러 이미지를 오릴수 있게 코드를 짜고 싶은데 구글링이나 stackoverflow를 봐도 맞게 나오는게 없어서 질문 드려 봅니다 ㅜㅜ createview를 이용하였는데 도저히 제실력으로는 바꿀수가 없어서요ㅜㅜ 도움 좀 부탁드립니다ㅜㅜ models.py from django.contrib.auth.models import Userfrom django.db import models# Create your models here.from projectapp.models import Projectclass Article(models.Model): writer = models.ForeignKey(User, on_delete=models.SET_NULL, related_name='article', null=True) project = models.ForeignKey(Project, on_delete=models.SET_NULL, related_name='article', null=True) title = models.CharField(max_length=200, null=False) image = models.ImageField(upload_to='article/', null=False) content = models.TextField(null=True) created_at = models.DateField(auto_now_add=True, null=True) like = models.IntegerField(default=0) unlike = models.IntegerField(default=0) views.py from django.contrib.auth.decorators import login_requiredfrom django.shortcuts import render# Create your views here.from django.urls import reverse, reverse_lazyfrom django.utils.decorators import method_decoratorfrom django.views.generic import CreateView, DetailView, UpdateView, DeleteView, ListViewfrom django.views.generic.edit import FormMixinfrom articleapp.decorators import article_ownership_requiredfrom articleapp.forms import ArticleCreationFormfrom articleapp.models import Articlefrom commentapp.forms import CommentCreationForm@method_decorator(login_required, 'get')@method_decorator(login_required, 'post')class ArticleCreateView(CreateView): model = Article form_class = ArticleCreationForm template_name = 'articleapp/create.html' def form_valid(self, form): temp_article = form.save(commit=False) temp_article.writer = self.request.user temp_article.save() return super().form_valid(form) def get_success_url(self): return reverse('articleapp:detail', kwargs={'pk': self.object.pk}) forms.py from django.forms import ModelFormfrom django import formsfrom articleapp.models import Articlefrom projectapp.models import Projectclass ArticleCreationForm(ModelForm): content = forms.CharField(widget=forms.Textarea(attrs={'class': 'editable', 'style': 'height: auto; text-align: left;'})) project = forms.ModelChoiceField(queryset=Project.objects.all(), required=False) class Meta: model = Article fields = ['title', 'image', 'project', 'content'] create.html {% extends 'base.html' %}{% load bootstrap4 %}{% block content %}<script src="//cdn.jsdelivr.net/npm/medium-editor@latest/dist/js/medium-editor.min.js"></script><link rel="stylesheet" href="//cdn.jsdelivr.net/npm/medium-editor@latest/dist/css/medium-editor.min.css" type="text/css" media="screen" charset="utf-8"> <div style="text-align: center; max-width: 500px; margin: 4rem auto"> <div class="mb-4"> <h4>Article Create</h4> </div> <form action="{% url 'articleapp:create' %}" method="post" enctype="multipart/form-data"> {% csrf_token %} {% bootstrap_form form %} <input type="submit" class="btn btn-dark rounded-pill col-6 mt-3"> </form> </div><script>var editor = new MediumEditor('.editable');</script>{% endblock %} card.html <div> <img src="{{ article.image.url }}" alt=""></div>