Django의 함수 기반보기 내에서 코드 반복을 피하려면 어떻게해야합니까?

LBD_23

코드 스 니펫을 계속해서 사용하지 않으려면 어떻게해야하는지 연구 해 왔습니다. 대답은 아마도 (일반적인) 클래스 기반 함수를 사용하는 것과 관련이있을 것입니다 . 그러나 나는 Django의 초보자이고 이것은 혼란스러워 보입니다. views.py의 내 견해는 다음과 같습니다.

@login_required(login_url='/login')
def view_list(request, listing_id):
bid = Bid.objects.all().filter(listing=listing_id).order_by('-id')
b_u = bid[0].user
listing = Listing.objects.get(pk=listing_id)

if request.method == "GET":
    return render(request, "auctions/view_list.html", {
        "form": BidForm(),
        "total_bids": bid.count(),
        "bid":  None if bid == 0 else bid[0].bid,
        "listing": listing,
        "bid_user": "Your bid is the current bid." if request.user == b_u else None
    })
else:
    form = BidForm(request.POST)
    if form.is_valid():
        value = form.cleaned_data
        if value['bid'] <= bid[0].bid:
            error_check = True
            return render(request, "auctions/view_list.html", {
                "error_check": error_check,
                "alert": f"Your bid is lower than the current bid $({bid[0].bid})! Try placing a higher one.",
                "form": BidForm(),
                "total_bids": bid.count(),
                "bid":  None if bid == 0 else bid[0].bid,
                "listing": listing,
                "bid_user": "Your bid is the current bid." if request.user == b_u else None
            })
        else:
            error_check = False
            new_bid = form.save(commit=False)
            new_bid.user_id = request.user.id
            new_bid.listing_id = listing.id
            new_bid.save()
            return render(request, "auctions/view_list.html", {
                "error_check": error_check,
                "alert": "Your bid was successfully placed!",
                "form": BidForm(),
                "total_bids": bid.count(),
                "bid":  None if bid == 0 else bid[0].bid,
                "listing": listing,
                "bid_user": "Your bid is the current bid." if request.user == b_u else None
            })

그리고 다음은 내 템플릿 코드입니다.

{% extends "auctions/layout.html" %} 
{% load humanize %}
{% load crispy_forms_tags %}

{% block body %}
    {% if error_check == True %}
        <div class="alert alert-warning" role="alert">
            {{ alert }}
        </div>
    {% elif error_check == False %}
        <div class="alert alert-success" role="alert">
            {{ alert }}
        </div>
    {% endif %}
    <div>
        <h3>Listing: {{ listing.title }}</h3>
        <img src="{{ listing.image }}" alt="Listings' Images">
        <p>{{ listing.description }}</p>
        {% if not bid %}
            <strong>${{ listing.price|stringformat:"1.2f" }}</strong>
        {% else %}
            <strong>${{ bid|stringformat:"1.2f" }}</strong>
        {% endif %}
        
        <p> {{ total_bids }} bid(s) so far. {% if bid_user %} {{ bid_user }} {% endif %}</p>
        <form method="POST" name="bidding" action="{% url 'view_list' listing.id %}">
            {% csrf_token %}
            <div class="input-group mb-3">
                <div class="input-group-prepend">
                    <span class="input-group-text">$</span>
                </div>   
                <div style="margin: 0; padding: 0 2px; height: 6px;">
                    {% crispy form %}
                </div>   
                <div class="input-group-append" >
                    <span class="input-group-text">.00</span>
                </div>
                <input type="submit" class="btn btn-primary" value="Place Bid">
            </div>
        </form>
        <h4>Details</h4>
            <li>Listed by: {{ listing.user }} </li>
            <li>Category: {{ listing.category }} </li>
            <li>Listing created at: {{ listing.created_at }} </li>
    </div>

{% endblock %}

그래서 어떻게이 모든 반복을 피하고 코드를 더 간결하게 만들 수 있습니까? 또한 이러한 방식으로 사용자가 낙찰을하면 렌더링 된 템플릿에 양식의 새 정보가 포함되지 않습니다.

mrvol

패턴은 매우 간단합니다

def some_view(request):
    form = SomeForm(request.POST or None)
    if request.method == 'POST' and form.is_valid():
        # Form processing
    return render(request, "auctions/view_list.html", {
                "form": form
    })

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

코드 점화기의 다른 함수에서 다중 변수 반환에 액세스하려면 어떻게해야합니까?

분류에서Dev

C #에서 열거 형으로 코드 반복을 피하려면 어떻게해야합니까?

분류에서Dev

Android의 수명주기 인식 코 루틴 범위에서 함수 값을 반환하려면 어떻게해야합니까?

분류에서Dev

테이블보기에서 이미지로드 반복을 중지하려면 어떻게해야합니까?

분류에서Dev

이 이벤트 핸들러에서 반복적 인 코드를 피하려면 어떻게해야합니까?

분류에서Dev

.NET MVC 앱의 모든 함수에서 일반 응답 및 응답 코드를 반환하려면 어떻게해야합니까?

분류에서Dev

반환없이 web2py의 html보기에서 생성기 함수를 작성하려면 어떻게해야합니까?

분류에서Dev

목록의 문자 인수에서 반복을 방지하려면 어떻게해야합니까?

분류에서Dev

두 개의 비동기 메서드에서 값을 반환하려면 어떻게해야합니까?

분류에서Dev

내 코드를 반복하려면 어떻게해야합니까?

분류에서Dev

처리하는 매개 변수의 데이터 유형 만 변경하는 함수 클래스를 정의 할 때 코드 반복을 피하려면 어떻게해야합니까?

분류에서Dev

Java에서 고속 의사 난수 문자열을 생성하기 위해 코드를 최적화하려면 어떻게해야합니까?

분류에서Dev

matplotlib에서 막대 차트를 색칠하기 위해 목록 변수의 값을 반복하려면 어떻게해야합니까?

분류에서Dev

Javascript의 연속 함수에서 부울 값을 반환하려면 어떻게해야합니까?

분류에서Dev

피아노 건반 당 하나의 배열에서 올바른 코드를 구성하려면 어떻게해야합니까?

분류에서Dev

함수 내에서 루프를 끊고 해당 함수의 값을 반환하려면 어떻게해야합니까? (자바 스크립트)

분류에서Dev

함수 내에서 루프를 끊고 해당 함수의 값을 반환하려면 어떻게해야합니까? (자바 스크립트)

분류에서Dev

라켓에서 맵을 사용하는 동안 중복 쌍이 반환되지 않도록 코드를 수정하려면 어떻게해야합니까?

분류에서Dev

NodeJS에서 응답 콜백을 생성 할 때 코드 반복을 피하려면 어떻게해야합니까?

분류에서Dev

플라스크 앱의 상태 코드를 기반으로 함수를 실행하려면 어떻게해야합니까?

분류에서Dev

함수에서 이전에 정의 된 useRef 변수를 반환하려면 어떻게해야합니까?

분류에서Dev

Vimperator에서 클립 보드의 내용을 빠르게 검색하려면 어떻게해야합니까?

분류에서Dev

Linux 기반 Apple 키보드에서 fn 수정 자 키없이 기능 키가 작동하도록하려면 어떻게해야합니까?

분류에서Dev

하위 루프에 들어가기 위해 .txt 파일을 반복하는 코드를 어떻게 수정해야합니까?

분류에서Dev

OCaml의 함수 (접기)에서 두 목록을 추적하려면 어떻게해야합니까?

분류에서Dev

내 컴퓨터가 Windows에서 스크립트 파일로 일련의 반복 작업을 수행하도록하려면 어떻게해야합니까?

분류에서Dev

두 필드 값을 기반으로 고유 한 문서를 내보내려면 어떻게해야합니까?

분류에서Dev

제한적인 기준으로 사서함을 반복하려면 어떻게해야합니까?

분류에서Dev

ReScript에서 여러 레코드 유형을 처리하는 일반 함수를 작성하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    코드 점화기의 다른 함수에서 다중 변수 반환에 액세스하려면 어떻게해야합니까?

  2. 2

    C #에서 열거 형으로 코드 반복을 피하려면 어떻게해야합니까?

  3. 3

    Android의 수명주기 인식 코 루틴 범위에서 함수 값을 반환하려면 어떻게해야합니까?

  4. 4

    테이블보기에서 이미지로드 반복을 중지하려면 어떻게해야합니까?

  5. 5

    이 이벤트 핸들러에서 반복적 인 코드를 피하려면 어떻게해야합니까?

  6. 6

    .NET MVC 앱의 모든 함수에서 일반 응답 및 응답 코드를 반환하려면 어떻게해야합니까?

  7. 7

    반환없이 web2py의 html보기에서 생성기 함수를 작성하려면 어떻게해야합니까?

  8. 8

    목록의 문자 인수에서 반복을 방지하려면 어떻게해야합니까?

  9. 9

    두 개의 비동기 메서드에서 값을 반환하려면 어떻게해야합니까?

  10. 10

    내 코드를 반복하려면 어떻게해야합니까?

  11. 11

    처리하는 매개 변수의 데이터 유형 만 변경하는 함수 클래스를 정의 할 때 코드 반복을 피하려면 어떻게해야합니까?

  12. 12

    Java에서 고속 의사 난수 문자열을 생성하기 위해 코드를 최적화하려면 어떻게해야합니까?

  13. 13

    matplotlib에서 막대 차트를 색칠하기 위해 목록 변수의 값을 반복하려면 어떻게해야합니까?

  14. 14

    Javascript의 연속 함수에서 부울 값을 반환하려면 어떻게해야합니까?

  15. 15

    피아노 건반 당 하나의 배열에서 올바른 코드를 구성하려면 어떻게해야합니까?

  16. 16

    함수 내에서 루프를 끊고 해당 함수의 값을 반환하려면 어떻게해야합니까? (자바 스크립트)

  17. 17

    함수 내에서 루프를 끊고 해당 함수의 값을 반환하려면 어떻게해야합니까? (자바 스크립트)

  18. 18

    라켓에서 맵을 사용하는 동안 중복 쌍이 반환되지 않도록 코드를 수정하려면 어떻게해야합니까?

  19. 19

    NodeJS에서 응답 콜백을 생성 할 때 코드 반복을 피하려면 어떻게해야합니까?

  20. 20

    플라스크 앱의 상태 코드를 기반으로 함수를 실행하려면 어떻게해야합니까?

  21. 21

    함수에서 이전에 정의 된 useRef 변수를 반환하려면 어떻게해야합니까?

  22. 22

    Vimperator에서 클립 보드의 내용을 빠르게 검색하려면 어떻게해야합니까?

  23. 23

    Linux 기반 Apple 키보드에서 fn 수정 자 키없이 기능 키가 작동하도록하려면 어떻게해야합니까?

  24. 24

    하위 루프에 들어가기 위해 .txt 파일을 반복하는 코드를 어떻게 수정해야합니까?

  25. 25

    OCaml의 함수 (접기)에서 두 목록을 추적하려면 어떻게해야합니까?

  26. 26

    내 컴퓨터가 Windows에서 스크립트 파일로 일련의 반복 작업을 수행하도록하려면 어떻게해야합니까?

  27. 27

    두 필드 값을 기반으로 고유 한 문서를 내보내려면 어떻게해야합니까?

  28. 28

    제한적인 기준으로 사서함을 반복하려면 어떻게해야합니까?

  29. 29

    ReScript에서 여러 레코드 유형을 처리하는 일반 함수를 작성하려면 어떻게해야합니까?

뜨겁다태그

보관