본문 바로가기

TIL/Python

[django project] 5. 해시태그

@login_required
@require_http_methods(["GET", "POST"])
def create(request):
    if request.method == "POST":
        if form.is_valid():
            product = form.save(request.user)
            for i in product.content.split():
                if i.startswith('#'):
                    tag, _ = Hashtag.objects.get_or_create(tag=i)
                    product.tags.add(tag)
            return redirect("products:detail", product.pk)
    else:
        form = ProductForm
    context = {'form' : form}
    return render(request, "products/create.html", context)

product.content를 split()으로 공백을 기준으로 i로 나눠주고

나눠준 i 가 #으로 시작한다면

product.tags에 넣어준다.

 

@login_required
@require_http_methods(["GET", "POST"])
def update(request, pk):
    product = get_object_or_404(Product, pk=pk)
    if product.user == request.user:
        if request.method == "POST":
            if "image" in request.FILES and product.image:
                default_storage.delete(product.image.path)
            form = ProductForm(request.POST, request.FILES, instance=product)
            if form.is_valid():
                product = form.save(request.user)
                product.tags.clear()
                for i in product.content.split():
                    if i.startswith('#'):
                        tag, _ = Hashtag.objects.get_or_create(tag=i)
                        product.tags.add(tag)
                return redirect("products:detail", product.pk)
        else:
            form = ProductForm(instance=product)
        context = {
            'form' : form,
            'product' : product
            }
    else:
        return redirect('home')
    return render(request, "products/update.html", context)

'TIL > Python' 카테고리의 다른 글

DRF Serializer 패스워드 해싱  (0) 2024.04.26
Django HTTP 301 에러  (0) 2024.04.22
[django project] 4. 게시글 검색, 정렬  (0) 2024.04.17
[django project] 3. Pagination  (0) 2024.04.16
[django project] 2. User Custom, Validator, Form  (0) 2024.04.15