1. 程式人生 > 實用技巧 >如何用Django建立一個後臺CRM系統03

如何用Django建立一個後臺CRM系統03

對訂單內容增加的url方式

  -在urls.py中增添url

    path('creat_order/',views.CreatOrder,name='creat_order'),

  -設定HTML頁面設定跳轉

			<a class="btn btn-primary  btn-sm btn-block" href="{% url 'creat_order' %}">Create Order</a>

  -在views中編寫函式

      -a 需要在資料庫取得資料 才能進行填充

        建立一個forms。py 利用frrom django。form import ModalForm 繼承model.py中的Order模型

        其中fields 相當於 {‘products’,‘customer’,‘status’} 抓取全部成員

from django.forms import  ModelForm
from .models import Order

class OrderForm(ModelForm):
    class Meta:
        model = Order
        fields = '__all__'

       -b 在viess中編寫函式

          OrderForm已經成功抓取資料

from .forms import OrderForm


def CreatOrder(request):
    form = OrderForm()
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/')
    context = {'form': form}
    return render(request,'accounts/orderform.html
',context)

  -在templates模板中編寫orderform.html

     -繼承main模板

     -{% csrf_token %} 是會form表單資料的加密保護

{% extends 'accounts/main.html' %}
{% load static %}
{% block content %}
    <form method="POST"  action="">
    {% csrf_token %}
    {{ form }}

        <input type="submit" value="Submit">

    </form>


{% endblock %}

對訂單內容修改資料的url方法

   -與增加操作步驟一樣 url view templates

      -<str:pk>主鍵用get傳遞引數

    path('update_order/<str:pk>/',views.UpdateOrder,name='update_order'),

    -跳轉 order。id是引數

                        <td><a class="btn btn-sm btn-info" href="{% url 'update_order' order.id %}">Update</a> </td>

    -views函式

      -加上變數pk 用於獲取目標訂單

      -與增加操作不同 修改操作需要將原來的資料填充上 所以使用instence

def UpdateOrder(request,pk):
    order = Order.objects.get(id=pk)
    form = OrderForm(instance=order)
    if request.method=='POST':
        form = OrderForm(request.POST,instance=order)
        if form.is_valid():
            form.save()
            return redirect('/')
    context ={'form':form}
    return render(request, 'accounts/orderform.html', context)

    -模板

{% extends 'accounts/main.html' %}
{% load static %}
{% block content %}
    <form method="POST"  action="">
    {% csrf_token %}
    {{ form }}

        <input type="submit" value="Submit">

    </form>


{% endblock %}

-對訂單內容的刪除操作步驟與修改操作類似

    path('dalete_order/<str:pk>/',views.DeleteOrder,name='delete_order'),
                        <td><a class="btn btn-sm btn-danger" href="{% url 'delete_order' order.id %}">Remove</a> </td>
def DeleteOrder(request, pk):
    order = Order.objects.get(id=pk)
    if request.method== 'POST':
        order.delete()
        return redirect('/')
    context = {'item':order}
    return render(request,'accounts/delete.html',context)
{% extends 'accounts/main.html' %}
{% load static %}
{% block content %}
    <br>
    <div class="row">
        <div class="col-md">
            <div class="card card-header">
                <p>ARE you sure delete thid {{ item }}?</p>
            </div>
            <div class="card card-body">
                <p>

                <form method="POST" action="{% url 'delete_order' item.id %}">
                    {% csrf_token %}
                    <input class="btn btn-danger" type="submit" value="Comfire">
                    <a class="btn btn-sm btn-warning" href="{% url 'home' %}">Cancel</a>
                </form>
            </div>
        </div>
    </div>
{% endbloc