1

Django で警告メッセージと確認メッセージを表示するための戦略を教えていただけないでしょうか。これを達成するための最良の方法が何であるかは本当にわかりません。メッセージとラッピング関数を含む別の .py ファイルを保持しますか、それともコードに沿ってすべてをハードコーディングしますか? そして、それは優先的にビューまたはテンプレートにあるべきだと思いますか?

とりあえずありがとう。

4

2 に答える 2

0

確認を表示するために再利用可能なビューを使用します

再利用可能なビュー

def bootstrap_confirm(
        request,
        heading,
        message,
        yes_color='success',
        yes_text='Yes',
        cancel_color='danger',
        cancel_text='No',
        cancel_url='',
        box_color='info',
        base_name='base.html'):
    if request.method == 'POST':
        confirm = request.session['confirm_value']
        assert request.POST.get('confirm') == confirm, "Error"
        return request.POST.get('submit_button') == yes_text
    else:
        confirm = get_random_string(16)
        request.session['confirm_value'] = confirm
        return render_to_response('django-helpers/twitter-bootstrap/confirm.html', request, {
            'confirm_value': confirm,

            'confirm_heading': heading,
            'message': message,
            'base_name': base_name,
            'box_color': box_color,

            'yes_color': yes_color,
            'yes_text': yes_text,

            'cancel_color': cancel_color,
            'cancel_text': cancel_text,
            'cancel_url': cancel_url,
        })

再利用可能なテンプレート

{% extends base_name %}

{% block main-contents %}
    <h2>{{ confirm_heading }}</h2>
    <form action="" method="post">
        {% csrf_token %}
        <input type="hidden" name="confirm" value="{{ confirm_value }}">

        <div class="alert alert-{{ box_color|default:"info" }}">
            <div>{{ message }}</div>
        <br>
            <div>
                <input type="submit" class="btn btn-{{ yes_color|default:"success" }}" name="submit_button" type="submit" value="{{ yes_text|default:"Yes" }}">
                {% if cancel_url %}
                    <a href="{{ cancel_url }}" class="btn btn-{{ cancel_color|default:"danger" }}">{{ cancel_text|default:"No" }}</a>
                {% endif %}
            </div>
        </div>
    </form>
{% endblock %}

意見

def confirm(request):
    msg = '...'
    heading = '...'
    op = bootstrap_confirm(request, heading, msg)
    if isinstance(op, HttpResponse):
        return op

    if op == True:
        # Implement custom logic
    elif op == False:
        # Implement custom logic

同様の再利用可能なビューを使用してメッセージを表示することもできます。このコードは私のライブラリdjango-helpersからのものです。また、より多くの戦略を知りたいと思っています。私が間違っている場合は修正してください。

于 2013-05-12T08:30:47.640 に答える