python - 通过 django 从 mySQL 服务器获取内容到网页时出现问题

标签 python mysql django

这是我第一次使用 mySQL 和 django,从服务器获取内容并将其显示在网页上时遇到一些问题。 这是我的代码: 这是index.html

{% extends 'test/layout.html' %}

{% block content %}
<hr>
<br>
<h1 class="container center-align">{{title}}</h1>
<br>
<h3 class="center-align blue lighten-3">Webpages</h3>
<ul class="collection">
    {% for homes in homes %}
      <li class="collection-item"><a href="test/details.html">{{homes.title}}</a></li>
    {% endfor %}
</ul>
{% endblock %}

views.py

from django.shortcuts import render
from django.http import HttpResponse
from .models import Home

def index(request):

    homes = Home.objects.all()[:10]

    context = {
        'title': 'All Home',
        'homes': homes
    }

    return render(request, 'test/index.html', context)


def details(request, id):
    home = Home.objects.get(id=id)

    context = {
    'Home': home
    }

    return render(request, 'test/details.html', context)

url.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'', views.index, name='index'),
    url(r'details/(?P<id>\d+)/', views.details, name='details')
]

模型.py

from django.db import models
from datetime import datetime

class Home(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    created_at = models.DateTimeField(default=datetime.now, blank=True)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = "Home"

详细信息.html

{% extends 'test/layout.html' %}

{% block content %}
<hr>
<br>
<h1 class="container center-align">{{home.title}}</h1>
<br>
<div class="card">
    <div class="card-content">
        {{home.body}}
    </div>
    <div class="card-action">
        {{created_at}}
    </div>
</div>
<a href="/test" class="btn">Go Back</a>
{% endblock %}

问题是,当我单击网页上的链接时,带有服务器文本的details.html 文件不显示。相反,主页显示(index.html),但现在在不同的网址下。(主页上的正常网址:localhost:8000,新网址:localhost:8000/test/details.html) 我认为问题出在 urls.py 文件中,但我不确定。 希望大家能够帮忙。

编辑: 我的文件夹

testdjango
|
|--testdjango(all the normal project files are in here)
|--test
|    |--__pycache__
|    |--migrations
|    |--templates
|    |    |--test
|    |        |--detalils.html
|    |        |--index.html
|    |        |--layout.html
|    |
|    |--__init__.py
|    |--admin.py
|    |--apps.py
|    |--models.py
|    |--tests.py
|    |--urls.py
|    |--views.py
|
|--db.sqlite3
|-- manage.py

最佳答案

您的代码存在一些问题。

我会挑选我第一眼看到的。

将命名空间添加到您的urls.py文件

from django.conf.urls import url
from . import views

app_name = 'something_meaningful'

urlpatterns = [
    url(r'', views.index, name='index'),
    url(r'details/(?P<id>\d+)/', views.details, name='details')
]

然后尝试对网址进行硬编码(您也以错误的方式进行了操作)。

<li class="collection-item">
    <a href="{% url 'something_meaningful: details' id=home.id %}">{{ home.title }}</a>
</li>

对于伟大的上帝,不要对序列和迭代器实例使用相同的变量名。

{% for home in homes %}
   # ul>li block above 
{% endfor %}

此外,您应该更好地更改 details 函数,如下所示(pk 更通用)。

def details(request, id=None):
    home = Home.objects.get(pk=id)

    context = {
    'Home': home
    }

    return render(request, 'test/details.html', context)

完成这些更改后,请提供反馈。

关于python - 通过 django 从 mySQL 服务器获取内容到网页时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50864602/

相关文章:

django - 自定义渲染 RichTextBlock 以删除 <div class ="rich-text">

python - AttributeError: 'list' 对象没有属性 'split'

python - 如何构建一个正则表达式来捕获由单个空格分隔的单词?

MySQL删除内部连接但外键约束失败

mysql - Ruby gem mysql2 安装失败

javascript - 如何使用js创建一个可编辑的网格

python - 如何使用 subprocess.POPEN 获取异步输入和输出

python - 从数据框列中的字符串中提取数字信息

c# - 剪切并粘贴 SQL 存储过程后出现语法错误

python - Linux 上 Django 的 SQL Server 2008/2012 后端模块?