Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Django详细信息视图返回404错误(其他stackoverflow解决方案不起作用)_Django_Django Views - Fatal编程技术网

Django详细信息视图返回404错误(其他stackoverflow解决方案不起作用)

Django详细信息视图返回404错误(其他stackoverflow解决方案不起作用),django,django-views,Django,Django Views,我最近问了一个关于DetialViews和linkify的问题,但我意识到,问题不在于linkify,而在于如何显示细节视图。每当我试图显示细节视图时,就会出现“404错误”。如何让它工作?我已经为此工作了一周,请帮忙。我不知道去哪里找 下面是url.py url模式:(我尝试了一系列不同的模式,但都无法正常工作。) 这是我的模特 class Hospital(models.Model): """Model representing Hospitals.""" name = mo

我最近问了一个关于DetialViews和linkify的问题,但我意识到,问题不在于linkify,而在于如何显示细节视图。每当我试图显示细节视图时,就会出现“404错误”。如何让它工作?我已经为此工作了一周,请帮忙。我不知道去哪里找

下面是url.py url模式:(我尝试了一系列不同的模式,但都无法正常工作。)

这是我的模特

class Hospital(models.Model):
    """Model representing Hospitals."""
    name = models.CharField(max_length=200, primary_key=True)
    hopid = models.UUIDField(default=uuid.uuid4, help_text='Unique ID for this particular hospital in database')
    location_text = models.CharField(max_length = 800)

    class Meta:
        ordering = ['hopid']

    def __str__(self):
        """String for representing the Model object."""
        return f'{self.name} ({self.location_text})'
这是我的html文件-hospital_list.html

{% extends "base_generic.html" %}

{% block content %}
  <h1>Hospital List</h1>
  {% if hospital_list %}
  <ul>
    {% for hospital in hospital_list %}
      <li>
        <a href="{% url 'hospital_detail' pk=hospital.pk %}">{{ hospital.name }}</a> ({{hospital.location_text}})
      </li>
    {% endfor %}
  </ul>
  {% else %}
    <p>There are no hospitals listed in your area.</p>
  {% endif %}
{% endblock %}
{%extensed“base_generic.html”%}
{%block content%}
医院名单
{%if医院_列表%}
    {医院内医院的百分比\u列表%}
  • ({{hospital.location_text}})
  • {%endfor%}
{%else%} 您所在地区没有列出任何医院

{%endif%} {%endblock%}
这是hospital_detail.html

{% extends "base_generic.html" %}

{% block content %}
  <h1> Hospital Name: {{ hospital.name }}</h1>
    <p><strong> Location: </strong>{{ hospital.location_text }}</p>
    <p><strong> Phone Number:</strong> {{ hospital.phone }}</p>
    <p><strong> Reviews: {{ hospital.reviews }</p>
{% endblock %}
{%extensed“base_generic.html”%}
{%block content%}
医院名称:{{Hospital.Name}
位置:{{hospital.Location\u text}

电话号码:{{hospital.Phone}

评论:{{hospital.Reviews}

{%endblock%}
解决:谢谢大家的帮助。我不知道出了什么问题。我做了一些事情,它解决了问题

  • 我把主键改成了医院名,而不是uuid。我只是把它叫做主键
  • 我删除了数据库并重新运行迁移

  • 这就解决了问题。有什么帮助来理解为什么会很好吗?

    可能是因为您正在为pk分配一个字符串

    class HospitalListView(generic.ListView):
        model = Hospital
        context_object_name = 'hospital_list'
        template_name = 'hospital_list.html'
    
    class HospitalDetailView(generic.DetailView):
        model = Hospital
        def hospital_detail_view(request, pk): # change here
            hospital = get_object_or_404(Hospital, pk=pk)  #oldone->pk='primary_key')
            return render(request, 'hospital_detail.html', {'hospital': hospital})
    
    也可以在URL中尝试:

    path('hospitals/<int:pk>', views.HospitalDetailView.as_view(), name='hospital_detail')
    
    path('hospitals/',views.HospitalDetailView.as\u view(),name='hospital\u detail')
    

    即使这不起作用,请确保您在视图中接收到pk值,我认为这是唯一的原因。尝试在url中打印pk值,以了解您是否正确接收到它。

    可能是因为您正在为pk分配字符串

    class HospitalListView(generic.ListView):
        model = Hospital
        context_object_name = 'hospital_list'
        template_name = 'hospital_list.html'
    
    class HospitalDetailView(generic.DetailView):
        model = Hospital
        def hospital_detail_view(request, pk): # change here
            hospital = get_object_or_404(Hospital, pk=pk)  #oldone->pk='primary_key')
            return render(request, 'hospital_detail.html', {'hospital': hospital})
    
    也可以在URL中尝试:

    path('hospitals/<int:pk>', views.HospitalDetailView.as_view(), name='hospital_detail')
    
    path('hospitals/',views.HospitalDetailView.as\u view(),name='hospital\u detail')
    

    即使这不起作用,请确保您在视图中接收到pk值,我认为这是唯一的原因。尝试在url中打印pk值,以了解您是否正确接收到pk值。

    通用视图是为“不要重复您自己”而构建的,请尝试下面的代码

    网址 浏览器内url exmaple即pk=2
    通用视图是为“不要重复自己”而构建的,请尝试下面的代码

    网址 浏览器内url exmaple即pk=2 在views.py中

    class HospitalDetailView(generic.DetailView):
        model = Hospital
        template_name = 'hospital_detail.html'
    
    在模板中

    {% extends "base_generic.html" %}
    
    {% block content %}
      <h1>Hospital List</h1>
      <ul>
         {% for hospital in hospital_list %}
         <li>
             <a href="{% url 'hospital_detail' hospital.pk %}">{{ hospital.name }}</a> 
             ({{hospital.location_text}})
         </li>
      </ul>
         {% empty %}
              <p>There are no hospitals listed in your area.</p>
         {% endfor %}
    {% endblock %}
    
    {%extensed“base_generic.html”%}
    {%block content%}
    医院名单
    
      {医院内医院的百分比\u列表%}
    • ({{hospital.location_text}})
    {%empty%} 您所在地区没有列出任何医院

    {%endfor%} {%endblock%}
    在url.py中

    path('hospitals/<int:pk>/', views.HospitalDetailView.as_view(), name='hospital_detail')
    
    path('hospitals/',views.HospitalDetailView.as_view(),name='hospital_detail')
    
    这将解决您的问题。

    在views.py中

    class HospitalDetailView(generic.DetailView):
        model = Hospital
        template_name = 'hospital_detail.html'
    
    在模板中

    {% extends "base_generic.html" %}
    
    {% block content %}
      <h1>Hospital List</h1>
      <ul>
         {% for hospital in hospital_list %}
         <li>
             <a href="{% url 'hospital_detail' hospital.pk %}">{{ hospital.name }}</a> 
             ({{hospital.location_text}})
         </li>
      </ul>
         {% empty %}
              <p>There are no hospitals listed in your area.</p>
         {% endfor %}
    {% endblock %}
    
    {%extensed“base_generic.html”%}
    {%block content%}
    医院名单
    
      {医院内医院的百分比\u列表%}
    • ({{hospital.location_text}})
    {%empty%} 您所在地区没有列出任何医院

    {%endfor%} {%endblock%}
    在url.py中

    path('hospitals/<int:pk>/', views.HospitalDetailView.as_view(), name='hospital_detail')
    
    path('hospitals/',views.HospitalDetailView.as_view(),name='hospital_detail')
    


    这将解决您的问题。

    谢谢您的回答!我已经尝试过了。它确实打印了字符串。下面是我得到的错误。也许它有帮助:当前路径,hospitals/(?P977db815-8248-4871-9305-865490174495[\w\d-]+)/,与其中任何一个都不匹配。请求方法:获取请求URL:感谢您的响应!我已经尝试了此操作。它确实打印字符串。下面是我得到的错误。可能有帮助:当前路径,hospitals/(?P977db815-8248-4871-9305-865490174495[\w\d-]+)/,与其中任何一个都不匹配。请求方法:获取请求URL:如果您手动键入URL,那么它是否有效?我刚刚尝试手动输入hospital/uuid/但它不起作用。您将如何手动输入它?checkout@JR您是否在URL中使用uuid:like/hospital/23-304kd03-4-30ddo-3/是否希望从模型中获取hopid字段的详细信息如果您手动输入lly键入url然后它工作吗?我刚刚尝试手动输入hospital/uuid/但它不工作。您将如何手动输入?checkout@JR您是否在url中使用uuid:like/hospital/23-304kd03-4-30ddo-3/您想要模型中hopid字段的详细信息谢谢您的回复!我真的很感激。我尝试了,但仍然不起作用k、 我仍然发现了“404错误”。Django使用django1.URL中定义的URLconf尝试了以下URL模式:admin/[name='index']lookup/[name='lookup']results/[name='results']hospitals/[name='hospital'u list']^hospitals/[name='hospital'u detail']post/[name='post'new']contact/[name='contact']about/[name='about']mapview/[name='mapview']^static/(?P.*)$当前路径,hospitals/(?P977db815-8248-4871-9305-865490174495[\w\d-]+)/,与其中任何一个都不匹配。您应该将
    pk
    作为
    integer
    而不是
    uuid
    传递。签出更新的代码。可能我不理解,但当我输入您的代码并在浏览器中输入此代码时,我得到了相同的错误:当前路径hospitals/2/,与这些路径中的任何一个都不匹配。我缺少什么吗?我是Django的新手,所以我取消了可能是有限的。@Anjaneyulu,我在第一次评论中与您共享了回溯。这只是404错误页面,有以下内容:Django使用django1.URL中定义的URLconf,尝试了这些URL模式,顺序如下:admin/[name='index']lookup/[name='lookup']results/[name='results']hospitals/[name='hospital.\u list']^hospitals//[name='hospital\u detail']post/[name='post\u new']contact/[name='contact']ab