Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决;“无反向匹配”;和Django_Python_Html_Django_Web - Fatal编程技术网

Python 如何解决;“无反向匹配”;和Django

Python 如何解决;“无反向匹配”;和Django,python,html,django,web,Python,Html,Django,Web,我试图做的是允许用户单击产品,进入产品页面,然后能够向该产品页面添加评论。用户添加评论时,评论会附加到产品中。我不确定这是否是最好的使用方法 在编辑表单后的最后几天里,我一直遇到这个错误的问题。如果您有任何解决方案,请告诉我 谢谢大家! 型号.py class Beach(models.Model): name = models.CharField(max_length=80) location = models.CharField(max_length=200)

我试图做的是允许用户单击产品,进入产品页面,然后能够向该产品页面添加评论。用户添加评论时,评论会附加到产品中。我不确定这是否是最好的使用方法

在编辑表单后的最后几天里,我一直遇到这个错误的问题。如果您有任何解决方案,请告诉我

谢谢大家!

型号.py

    class Beach(models.Model):
    name = models.CharField(max_length=80)
    location = models.CharField(max_length=200)
    video = models.FileField(upload_to='beachvideo', blank=True)
    beachPic = models.ImageField(default='default.jpg', upload_to='beachphotos', blank=True)
    datetimeInfo = models.DateTimeField(auto_now=True)
    lat = models.FloatField()
    lon = models.FloatField()
    info = models.TextField()

    def average_rating(self):
        all_ratings = map(lambda x: x.rating, self.review_set.all())
        return np.mean(all_ratings)

    def __str__(self):
        return f'{self.name}'

class Review(models.Model):
    RATING = (
        ('1', 'Avoid'),
        ('2', 'Not Great'),
        ('3', 'Decent'),
        ('4', 'Awesome'),
        ('5', 'The Best'),
    )

    beach = models.ForeignKey(Beach, on_delete= models.CASCADE)
    author = models.ForeignKey(User, null=True, blank=True, on_delete= models.CASCADE)
    ratingRank = models.CharField(max_length= 100, blank=False, choices=RATING)
    waveIntensityRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    crowdednessRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    pollutionRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    noiseLevelRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    servicesRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    comments = models.TextField(max_length=250, blank=True)
    pub_date = models.DateTimeField(auto_now=True)

    def get_absolute_url(self):
        return reverse('beaches-home')

    def __str__(self):
        return self.author.username
def beachView(request):
    beachView = {
        'beachView': Beach.objects.all()
    }
    return render(request, 'beaches/index.html', context = beachView)


def beachDescription(request, pk):
    beachDesc = {
        'beachDesc': Beach.objects.get(pk=pk)
    }
    return render(request, 'beaches/description.html', context = {'beachDesc': beachDesc} )


def review_list(request):
    latest_reviews = Review.objects.order_by('-pub_date')[:9]



def add_review(request, beach_id):
    beachRev = get_object_or_404(Beach, pk=beach_id)
    review_form = ReviewForm(request.POST)
    if review_form.is_valid():
        rating = review_form.cleaned_data['rating']
        comment = review_form.cleaned_data['comments']
        user_name = review_form.cleaned_data['author']
        wave_intensity = review_form.cleaned_data['waveIntensityRank']
        crowds = review_form.cleaned_data['crowdednessRank']
        pollution = review_form.cleaned_data['pollutionRank']
        noise_level = review_form.cleaned_data['noiseLevelRank']
        services = review_form.cleaned_data['servicesRank']
        review = Review()
        review.beach = beachRev
        review.author = user_name
        review.rating = rating
        review.waveIntensityRank = wave_intensity
        review.crowdednessRank = crowds
        review.pollutionRank = pollution
        review.noiseLevelRank = noise_level
        review.servicesRank = services
        review.comments = comment
        review.pub_date = datetime.datetime.now()
        review.save()

        return HttpResponseRedirect(reverse('beaches/description.html', args=(beach_id,)))
    #if request.method == "POST":
        #review_form = review_form(data=request.POST)
        #if review_form.is_valid():
        #    rating = review_form.cleaned_data
        #    post.date = timezone.now()
        #    post.save()
        #    return redirect('beaches/beachReview.html')
        #else:
        #    form=ReviewForm()

    return render(request, 'beaches/beachReview.html', context= {'beachRev': beachRev, 'review_form': review_form})



class searchResultsView(ListView):
    model = Beach
    template_name = 'beaches/searchResults.html'

    def get_queryset(self): # new
        query = self.request.GET.get('q')
        object_list = Beach.objects.filter(
            Q(name__icontains=query) | Q(location__icontains=query)
        )
        return object_list
 urlpatterns = [
    path('', views.beachView, name='beaches-home'),
    path('<int:pk>/', views.beachDescription, name='beaches-description'),
    path('search/', views.searchResultsView.as_view(), name='search-results'),
    path('review/<int:pk>', views.add_review, name='beaches-review')
]
视图.py

    class Beach(models.Model):
    name = models.CharField(max_length=80)
    location = models.CharField(max_length=200)
    video = models.FileField(upload_to='beachvideo', blank=True)
    beachPic = models.ImageField(default='default.jpg', upload_to='beachphotos', blank=True)
    datetimeInfo = models.DateTimeField(auto_now=True)
    lat = models.FloatField()
    lon = models.FloatField()
    info = models.TextField()

    def average_rating(self):
        all_ratings = map(lambda x: x.rating, self.review_set.all())
        return np.mean(all_ratings)

    def __str__(self):
        return f'{self.name}'

class Review(models.Model):
    RATING = (
        ('1', 'Avoid'),
        ('2', 'Not Great'),
        ('3', 'Decent'),
        ('4', 'Awesome'),
        ('5', 'The Best'),
    )

    beach = models.ForeignKey(Beach, on_delete= models.CASCADE)
    author = models.ForeignKey(User, null=True, blank=True, on_delete= models.CASCADE)
    ratingRank = models.CharField(max_length= 100, blank=False, choices=RATING)
    waveIntensityRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    crowdednessRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    pollutionRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    noiseLevelRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    servicesRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    comments = models.TextField(max_length=250, blank=True)
    pub_date = models.DateTimeField(auto_now=True)

    def get_absolute_url(self):
        return reverse('beaches-home')

    def __str__(self):
        return self.author.username
def beachView(request):
    beachView = {
        'beachView': Beach.objects.all()
    }
    return render(request, 'beaches/index.html', context = beachView)


def beachDescription(request, pk):
    beachDesc = {
        'beachDesc': Beach.objects.get(pk=pk)
    }
    return render(request, 'beaches/description.html', context = {'beachDesc': beachDesc} )


def review_list(request):
    latest_reviews = Review.objects.order_by('-pub_date')[:9]



def add_review(request, beach_id):
    beachRev = get_object_or_404(Beach, pk=beach_id)
    review_form = ReviewForm(request.POST)
    if review_form.is_valid():
        rating = review_form.cleaned_data['rating']
        comment = review_form.cleaned_data['comments']
        user_name = review_form.cleaned_data['author']
        wave_intensity = review_form.cleaned_data['waveIntensityRank']
        crowds = review_form.cleaned_data['crowdednessRank']
        pollution = review_form.cleaned_data['pollutionRank']
        noise_level = review_form.cleaned_data['noiseLevelRank']
        services = review_form.cleaned_data['servicesRank']
        review = Review()
        review.beach = beachRev
        review.author = user_name
        review.rating = rating
        review.waveIntensityRank = wave_intensity
        review.crowdednessRank = crowds
        review.pollutionRank = pollution
        review.noiseLevelRank = noise_level
        review.servicesRank = services
        review.comments = comment
        review.pub_date = datetime.datetime.now()
        review.save()

        return HttpResponseRedirect(reverse('beaches/description.html', args=(beach_id,)))
    #if request.method == "POST":
        #review_form = review_form(data=request.POST)
        #if review_form.is_valid():
        #    rating = review_form.cleaned_data
        #    post.date = timezone.now()
        #    post.save()
        #    return redirect('beaches/beachReview.html')
        #else:
        #    form=ReviewForm()

    return render(request, 'beaches/beachReview.html', context= {'beachRev': beachRev, 'review_form': review_form})



class searchResultsView(ListView):
    model = Beach
    template_name = 'beaches/searchResults.html'

    def get_queryset(self): # new
        query = self.request.GET.get('q')
        object_list = Beach.objects.filter(
            Q(name__icontains=query) | Q(location__icontains=query)
        )
        return object_list
 urlpatterns = [
    path('', views.beachView, name='beaches-home'),
    path('<int:pk>/', views.beachDescription, name='beaches-description'),
    path('search/', views.searchResultsView.as_view(), name='search-results'),
    path('review/<int:pk>', views.add_review, name='beaches-review')
]
HTML

  {% extends 'base.html' %}
{% load static %}


{% block content %}

<head>
  <link rel="stylesheet" href="{% static 'css/bestbeach.css' %}">
</head>

<h1> {{ beachDesc.name }} </h1>
<h4> Location: {{ beachDesc.location }} </h4>
<h4> Rating: {{ beachDesc.ratingRank }} </h4>

<table>
  <tr>
    <td> <img src="{{ beachDesc.beachPic.url }}" width="350px" height="200px"/> </td>
  </tr>
  <tr>
    <td> <video width="350px" height="200px" loop="loop" preload="auto" controls>
          <source src="{{ beachDesc.video.url }}" type="video/mp4">
            Your browser does not support the video.
         </video>
    </td>
  </tr>
</table>

<h4> Information: {{ beachDesc.info }} </h4>

{% if user.is_authenticated %}
<a href="{% url 'beaches-review' %}">
<button class="goButton" type="submit">Leave a Review</button>
</a>
{% endif %}

{% if review_list %}
<div>
    {% for r in review_list %}
    <div>
      <h4> Reviews: </h4>
        <p> {{ r.author }} </p>
        <h6> rated {{ r.rating }} of 5 </h6>
        <p>{{ r.comments }}</p>
    </div>
    {% endfor %}
</div>
{% else %}
<p>No reviews are available.</p>
{% endif %}



{% endblock %}
{%extends'base.html%}
{%load static%}
{%block content%}
{{beachDesc.name}
位置:{{beachDesc.Location}
评级:{{beachDesc.ratingRank}
您的浏览器不支持该视频。
信息:{{beachDesc.info}
{%if user.u经过身份验证%}
{%endif%}
{%if review_list%}
{审查中的r的%u列表%}
审查:
{{r.author}}

额定值{r.rating}}为5 {{r.comments}}

{%endfor%} {%else%} 没有可用的评论

{%endif%} {%endblock%}
url.py

    class Beach(models.Model):
    name = models.CharField(max_length=80)
    location = models.CharField(max_length=200)
    video = models.FileField(upload_to='beachvideo', blank=True)
    beachPic = models.ImageField(default='default.jpg', upload_to='beachphotos', blank=True)
    datetimeInfo = models.DateTimeField(auto_now=True)
    lat = models.FloatField()
    lon = models.FloatField()
    info = models.TextField()

    def average_rating(self):
        all_ratings = map(lambda x: x.rating, self.review_set.all())
        return np.mean(all_ratings)

    def __str__(self):
        return f'{self.name}'

class Review(models.Model):
    RATING = (
        ('1', 'Avoid'),
        ('2', 'Not Great'),
        ('3', 'Decent'),
        ('4', 'Awesome'),
        ('5', 'The Best'),
    )

    beach = models.ForeignKey(Beach, on_delete= models.CASCADE)
    author = models.ForeignKey(User, null=True, blank=True, on_delete= models.CASCADE)
    ratingRank = models.CharField(max_length= 100, blank=False, choices=RATING)
    waveIntensityRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    crowdednessRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    pollutionRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    noiseLevelRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    servicesRank = models.CharField(max_length= 100, blank=True, choices=RATING)
    comments = models.TextField(max_length=250, blank=True)
    pub_date = models.DateTimeField(auto_now=True)

    def get_absolute_url(self):
        return reverse('beaches-home')

    def __str__(self):
        return self.author.username
def beachView(request):
    beachView = {
        'beachView': Beach.objects.all()
    }
    return render(request, 'beaches/index.html', context = beachView)


def beachDescription(request, pk):
    beachDesc = {
        'beachDesc': Beach.objects.get(pk=pk)
    }
    return render(request, 'beaches/description.html', context = {'beachDesc': beachDesc} )


def review_list(request):
    latest_reviews = Review.objects.order_by('-pub_date')[:9]



def add_review(request, beach_id):
    beachRev = get_object_or_404(Beach, pk=beach_id)
    review_form = ReviewForm(request.POST)
    if review_form.is_valid():
        rating = review_form.cleaned_data['rating']
        comment = review_form.cleaned_data['comments']
        user_name = review_form.cleaned_data['author']
        wave_intensity = review_form.cleaned_data['waveIntensityRank']
        crowds = review_form.cleaned_data['crowdednessRank']
        pollution = review_form.cleaned_data['pollutionRank']
        noise_level = review_form.cleaned_data['noiseLevelRank']
        services = review_form.cleaned_data['servicesRank']
        review = Review()
        review.beach = beachRev
        review.author = user_name
        review.rating = rating
        review.waveIntensityRank = wave_intensity
        review.crowdednessRank = crowds
        review.pollutionRank = pollution
        review.noiseLevelRank = noise_level
        review.servicesRank = services
        review.comments = comment
        review.pub_date = datetime.datetime.now()
        review.save()

        return HttpResponseRedirect(reverse('beaches/description.html', args=(beach_id,)))
    #if request.method == "POST":
        #review_form = review_form(data=request.POST)
        #if review_form.is_valid():
        #    rating = review_form.cleaned_data
        #    post.date = timezone.now()
        #    post.save()
        #    return redirect('beaches/beachReview.html')
        #else:
        #    form=ReviewForm()

    return render(request, 'beaches/beachReview.html', context= {'beachRev': beachRev, 'review_form': review_form})



class searchResultsView(ListView):
    model = Beach
    template_name = 'beaches/searchResults.html'

    def get_queryset(self): # new
        query = self.request.GET.get('q')
        object_list = Beach.objects.filter(
            Q(name__icontains=query) | Q(location__icontains=query)
        )
        return object_list
 urlpatterns = [
    path('', views.beachView, name='beaches-home'),
    path('<int:pk>/', views.beachDescription, name='beaches-description'),
    path('search/', views.searchResultsView.as_view(), name='search-results'),
    path('review/<int:pk>', views.add_review, name='beaches-review')
]
urlpatterns=[
路径(“”,views.beachView,name='beats-home'),
路径(“/”,views.beachDescription,name='beats-description'),
路径('search/',views.searchResultsView.as_view(),name='search-results'),
路径('review/',views.add_review,name='beats-review')
]

谢谢你的帮助

看起来您正在尝试使用模板而不是路由名称生成url:

return HttpResponseRedirect(reverse('beaches/description.html', ...))
相反,您希望:

return HttpResponseRedirect(reverse("beaches-description", ...))

看起来您正在尝试使用模板而不是路由名称生成url:

return HttpResponseRedirect(reverse('beaches/description.html', ...))
相反,您希望:

return HttpResponseRedirect(reverse("beaches-description", ...))

请包括您的stacktrace@schillingt。对不起,条款上有点生疏。什么是stacktrace?请包括您的stacktrace。@schillingt。对不起,条款上有点生疏。什么是stacktrace?感谢您的回复!我会尝试一下,看看它是否管用。这很管用,但现在我从“海滩评论”中得到了一个与之不匹配的反面。谢谢你的回复!我会试试看它是否有效。这很有效,但现在我从《海滩评论》中得到了一个与之相反的答案