【发布时间】:2020-12-13 11:34:20
【问题描述】:
我正在创建一个爱好网站(Airbnb 克隆),其中索引页面上有一个接受城市和属性类型(公寓、办公室、餐厅等)的表单。
我使用 Django 作为我的后端。
托管:https://directoffices.azurewebsites.net/(加载可能需要一些时间**没有 CDN 配置)
页面是索引和列表,其中索引是登录页面,由搜索表单和列出属性的列表组成。
我已经建立了一个表单(forms.py):
class SearchPropertyForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['city'].required = False
self.fields['city'].empty_label = 'Where do you want to go?'
self.fields['city'].widget.attrs.update(
{'class': 'chosen-select-no-single'})
self.fields['property_type'].required = False
self.fields['property_type'].empty_label = 'Any Type'
self.fields['property_type'].widget.attrs.update(
{'class': 'chosen-select-no-single'})
class Meta:
model = Listing
fields = ['city', 'property_type']
Views.py
def index(request):
searchForm = SearchPropertyForm()
CONTEXT = {
'searchForm': searchForm
}
if request.method == "GET":
searchForm = SearchPropertyForm(request.GET)
if searchForm.is_valid():
location = searchForm.cleaned_data.get('city')
property_type = searchForm.cleaned_data.get('property_type')
listings = Listing.objects.filter(
city=location, property_type=property_type)
return render(request, 'core/listings.html', {'listings' : listings})
else:
searchForm.errors.as_data()
else:
return render(request, 'core/index.html', CONTEXT)
HTML:
<form class="main-search-form" method="GET" action="/listings/">
** CONTENTS AND FIELDS **
</form>
urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from core import views as coreViews
from users import views as userViews
from properties import views as propertyViews
urlpatterns = [
path('admin/', admin.site.urls),
path('', coreViews.index, name="index"),
path('listing/', coreViews.listing, name='listing'),
path('contact/', coreViews.contact, name='contact'),
path('privacy-policy/', coreViews.privacyPolicy, name='privacyPolicy'),
path('terms-and-conditions/', coreViews.terms, name='terms'),
path('login/', userViews.loginPage, name='loginPage'),
path('logout/', userViews.logoutUser, name='logout'),
path('register/', userViews.registerPage, name='registerPage'),
path('property/', include('properties.urls', namespace='property')),
path('submit-property/', propertyViews.submitProperty, name='submit_property'),
path('sample-property/', propertyViews.sampleProperty, name='sample_property'),
path('user/<str:user_id>/', include('users.urls', namespace='users')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
我不确定这是否是正确的做法,一旦列表页面打开,索引页面总是重定向到列表页面并且没有办法返回。
请帮帮我。
【问题讨论】:
标签: python django forms django-models django-forms