Django文件未通过表单模板发送

时间:2019-01-29 20:08:32

标签: django-forms django-views django-validation

我有以下表单模板:

import request from "supertest";
import router from "./router";

const sendMailMock = jest.fn(); // this will return undefined if .sendMail() is called

// In order to return a specific value you can use this instead
// const sendMailMock = jest.fn().mockReturnValue(/* Whatever you would expect as return value */);

jest.mock("nodemailer");

const nodemailer = require("nodemailer"); //doesn't work with import. idk why
nodemailer.createTransport.mockReturnValue({"sendMail": sendMailMock});

beforeEach( () => {
    sendMailMock.mockClear();
    nodemailer.createTransport.mockClear();
});

describe("", () => {
...

    test("", async () => {
        // 1 - 200 status code; 2 - check email was sent
        expect.assertions(2);

        const response = await request(router)
            .post("/login")
            // global variable
            .send({ "email": email })
            .set("Accept", "application/json")
            .expect("Content-Type", /json/);

        // should complete successfully
        expect(response.status).toBe(200);

        // TODO not sure how to express the expect statement here
        expect(sendMailMock).toHaveBeenCalled();
    });
});

属于以下形式:

<form action="{% url 'reg:create_item' %}" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <div class="level">
        <div class="level-left">
            <div class="level-item">
                <div class="field">
                    <label for={{form.name.id_for_label}} class="label has-text-weight-light">Name</label>
                    <div class="control">
                        {{form.name}}
                    </div>
                </div>
            </div>
        </div>
        <div class="level-right">
            <div class="level-item">
                <div class="field">
                    <label for="{{form.photo.id_for_label}}" class="label image is-96x96" style="cursor:pointer;">
                        <img id="dish_thumb" src="https://via.placeholder.com/96" alt="">
                    </label>
                    <div class="control">
                        {{form.photo}}
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="field">
        <label for="{{form.price.id_for_label}}" class="label has-text-weight-light">Item value</label>
        <div class="control">
            {{form.price}}
        </div>
    </div>
    <div class="field is-grouped">
        <div class="control">
            <button class="button is-medium is-danger">Cancel</button>
        </div>
        <div class="control">
            <button type="submit" class="button is-medium is-link">Add</button>
        </div>
    </div>
  </form>

和视图:

class ItemForm(ModelForm):

    class Meta:
        model = Item
        fields = ['name','price','photo']

        widgets = {
            'name': TextInput(attrs={
                'class': 'input',
                'placeholder': 'Dish name'
                })
            'price': TextInput(attrs={
                'class': 'input',
                'placeholder': 'Ex: $45,90'
            })
        }

表单正确呈现,但是在提交时,我被发送到表单模板。我使用jQuery停止了该事件,以查看正在发送的数据,并注意到没有发送class CreateItem(LoginRequiredMixin, PassRequestUserMixin, PermissionRequiredMixin, generic.CreateView): permission_required = "reg.can_create_item_on_menu" model = Item form_class = ItemForm template_name = 'menu_item_form.html' context_object_name = 'object_name' def get_success_url(self, **kwargs): if kwargs: return reverse_lazy('reg:item_list', kwargs={'menu_id': self.object.menu.id}) return reverse_lazy('reg:item_list', args=(self.object.menu.id,)) 字段。

我在做什么错了?

0 个答案:

没有答案