这是我第一次使用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)
urls.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')
]
models.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"
details.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),但现在在不同的URL下。(主页上的普通网址: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
答案 0 :(得分:0)
您的代码存在一些问题。
我会选择我第一眼看到的那些。
为您的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)
请在完成这些更改后提供反馈。