#django #twitter-bootstrap #django-models #django-forms
#django #twitter-bootstrap #django-models #django-forms
Вопрос:
path(«, include(‘farmingwave.urls’)), File «F:farmlibsite-packagesdjangourlsconf.py «, строка 34, в include urlconf_module = import_module(urlconf_module) Файл «C:UsersMohitAppDataLocalProgramsPythonPython39libimportlib_init_.py «, строка 127, в import_module возвращает _bootstrap._gcd_import(name[level:], package, level) Файл «», строка 1030, в файле _gcd_import «», строка 1007, в файле _find_and_load «», строка 986, в файле _find_and_load_unlocked «», строка 680, в_load_unlocked
Файл «», строка 790, в файле exec_module «», строка 228, в файле call_with_frames_removed «F:farmfwavefarmingwaveurls.py «, строка 3, в из . импорт файла представлений «F:farmfwavefarmingwaveviews.py «, строка 3, в файле from .forms import ContactForm «F:farmfwavefarmingwaveforms.py «, строка 3, из django.forms import ContactForm ImportError: невозможно импортировать имя «ContactForm» из «django.forms» (F:farmlibsite-packagesdjangoforms_init.py )мой views.py
from django.shortcuts import render
from django.http import HttpResponse
from .forms import contactForm
from django.forms import ModelForm
from django.core.mail import send_mail
def contact(request):
if request.method == 'GET':
form = contactForm()
else:
form = contactForm(request.POST)
if form.is_valid():
form.save()
name = form.cleaned_data['name']
email = form.cleaned_data['email']
Phonenumber = form.cleaned_data['Phonenumber']
try:
send_mail(subject, message, from_email,['admin@example.com'])
except BadHeaderError:
return HttpResponse('Invalid header found.')
return redirect('success')
return render(request, "contact-form.html", {'form': form})
мой form.py
from django import forms
from django.core.validators import RegexValidator
# from django.forms import contactForm
from .models import contactForm
class contactForm(forms.ModelForm):
name = forms.CharField(max_length=100,widget=forms.TextInput(attrs={'class' :
'form-control col-lg-12', 'placeholder': 'Name'}), label='')
email = forms.EmailField(widget=forms.TextInput(attrs={'class' : 'form-control col-lg-12', 'placeholder': 'Email'}), label='')
Phonenumber = forms.CharField(max_length=10, validators= [RegexValidator(r'^d{1,10}$')], widget=forms.TextInput(attrs={'class' : 'form-control col-lg-12', 'placeholder': 'Mobile'}), label='')
class contactForm(forms.ModelForm):
class Meta:
model = contactForm
fields = '__all__'
мой model.py
from django.db import models
from django.forms import ModelForm
from django.core.validators import RegexValidator
class contactForm(models.Model):
name = models.CharField(max_length=255)
Phonenumber = models.CharField(max_length=10, validators=[RegexValidator(r'^d{1,10}$')])
email = models.EmailField(max_length=254)
Ответ №1:
Прежде всего, вы должны опубликовать некоторый код, подобный вашему forms.py для пояснения, но, увидев сообщение об ошибке, оно показывает, что django.forms import ContactForm не может импортировать имя ‘ContactForm’ из ‘django.forms’.Похоже, что ContactForm — это имя модели, на которой вы хотите сформировать свою форму. Поскольку это model, как мы можем импортировать это из django.forms? Используйте этот код;
from .models import contactForm
from django.forms import modelForm #modelForm helps to create forms from models
class yourForm(modelForm):
class Meta:
model = contactForm #here we provide the name of the model from which the form is to be inherited
fields = ('here_provide_the_name_of_the_fields_of_the_model_which_you_want_to_Include_in_the_form')
Разные поля будут размещены как разные элементы кортежа полей.
Если вы хотите включить все поля в форму;
fields = __all__
Комментарии:
1. я опубликовал свой form.py как ты и сказал
2. Прежде всего, вам не нужно импортировать ModelForm в свой models.py . Хотя это не является большой проблемой. 2-я проблема заключается в том, что вы создаете другой класс ContactForm внутри предопределенного класса ContactForm, который не имеет никакого смысла. Вы хотите создать поля в соответствии с вашей моделью, но сначала вы создаете их вручную внутри ContactForm, а затем вы снова определяете другой класс с тем же именем внутри уже созданного класса и пытаетесь получить поля в соответствии с вашей моделью. Что вам действительно нужно, так это заменить весь класс классом, который вы определили внутри класса ContactForm .
3. Короче говоря, просто следуйте моему ответу.
4. Мой ответ завершен forms.py для вашего проекта.
5. Еще раз я хочу упомянуть, что ContactForm — это модель, созданная вами, и не принадлежит django.forms. Поэтому импортировать его из django.forms не имеет никакого смысла.