写一个基于Django的旅游景点搜索网站代码
时间: 2024-05-30 20:15:55 浏览: 12
由于本模型无法提供完整的Django代码,以下是一个大致的伪代码示例:
# 1.导入必要的模块
from django.db import models
from django.urls import reverse
# 2.创建数据模型
class City(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('city_detail', args=[str(self.id)])
class Sight(models.Model):
city = models.ForeignKey(City, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
description = models.TextField()
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('sight_detail', args=[str(self.id)])
# 3.编写视图函数
from django.shortcuts import render
from django.views import generic
from django.db.models import Q
from .models import City, Sight
class CityListView(generic.ListView):
model = City
template_name = 'city_list.html'
class CityDetailView(generic.DetailView):
model = City
template_name = 'city_detail.html'
class SightDetailView(generic.DetailView):
model = Sight
template_name = 'sight_detail.html'
class SearchResultsView(generic.ListView):
model = Sight
template_name = 'search_results.html'
def get_queryset(self): # 新增搜索函数
query = self.request.GET.get('q')
object_list = Sight.objects.filter(
Q(name__icontains=query) | Q(description__icontains=query)
)
return object_list
# 4.编写模板
<!-- city_list.html -->
{% extends 'base.html' %}
{% block content %}
<ul>
{% for city in object_list %}
<li><a href="{{ city.get_absolute_url }}">{{ city.name }}</a></li>
{% endfor %}
</ul>
{% endblock %}
<!-- city_detail.html -->
{% extends 'base.html' %}
{% block content %}
<h1>{{ object.name }}</h1>
<p>{{ object.description }}</p>
<ul>
{% for sight in object.sight_set.all %}
<li><a href="{{ sight.get_absolute_url }}">{{ sight.name }}</a></li>
{% endfor %}
</ul>
{% endblock %}
<!-- sight_detail.html -->
{% extends 'base.html' %}
{% block content %}
<h1>{{ object.name }}</h1>
<p>{{ object.description }}</p>
{% endblock %}
<!-- search_results.html -->
{% extends 'base.html' %}
{% block content %}
<h1>Search Results</h1>
<ul>
{% for sight in object_list %}
<li><a href="{{ sight.get_absolute_url }}">{{ sight.name }} ({{ sight.city.name }})</a></li>
{% empty %}
<li>No results found.</li>
{% endfor %}
</ul>
{% endblock %}
<!-- base.html -->
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}My Travel Site{% endblock %}</title>
</head>
<body>
<nav>
<ul>
<li><a href="{% url 'city_list' %}">Cities</a></li>
</ul>
</nav>
<main>
{% block content %}
{% endblock %}
</main>
</body>
</html>
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)