【问题标题】:Django not displaying block contentDjango不显示块内容
【发布时间】:2015-10-18 02:50:15
【问题描述】:

我对 Django 很陌生,我正在尝试设置我的项目,以便有一个主页,然后在主页之外有一堆不同的链接。问题是每当我单击我的其他选项卡之一(产品、登录、联系人)等时,它只会重新加载主页阻止内容,尽管我告诉它加载其他内容。因此,当我单击链接时,它确实表明我在一个新网页上(例如在 url 栏中,我会看到我的 BASE_DIR 与 '/courses/products/' 是什么,但它总是显示views.homepage的同一个网站. 这是我的课程/urls.py:

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

urlpatterns = [
               url(r'$', views.homepage, name='homepage'),
               url(r'contact/$', views.contact, name='contact'),
               url(r'login/$', views.login, name='login'),
               url(r'products/$', views.products, name='products'),
               url(r'register/$', views.register, name='register'),
]

这是模板文件夹中的我的 layout.html:

{% load static from staticfiles %}
<!DOCTYPE html>
<html>
    <head>
        <meta charset = "utf-8">
            <title>HealthSmart</title>
            <link href="{% static 'images/photo.jpg' %}" rel='icon' type='image/x-icon' />
            <link rel="stylesheet" href="{% static 'css/normalize.css' %}" />
            <link href="http://fonts.googleapis.com/css?family=Lora|Open+Sans:400italic,700italic,400,700,300,800" rel='stylesheet' type='text/css' />
            <link href='http://fonts.googleapis.com/css?family=Varela+Round|' rel='stylesheet' type='text/css' />
            <link rel="stylesheet" href="{% static 'css/pavle.css' %}" />
            <link rel="stylesheet" href="{% static 'css/responsive.css' %}" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <header>
            <a href="{% url 'courses:homepage' %}" id="logo">
                <h1>{% block title %} {% endblock %}</h1>
            </a>
            <nav>
                <ul>
                    <li><a href="{% url 'courses:homepage' %}">Home</a></li>
                    <li><a href="{% url 'courses:products' %}">Products</a></li>
                    <li><a href="{% url 'courses:contact' %}">Contact</a></li>
                    <li><a href="{% url 'courses:login' %}">Login</a></li>
                </ul>
            </nav>
        </header>
        {% block content %} {% endblock %}
        <div id="footer">
            <footer>
                <a href="http://www.briggscorp.com/"><img src="{% static 'images/briggs.png' %}" alt="BriggsLogo" class="social-icon"></a>
                <p>&copy;2015 HealthSmart Prototypes.</p>
            </footer>
        </div>
    </body>
</html>

最后,这是我的views.py:

from django.shortcuts import get_object_or_404
from django.shortcuts import render

from .models import Owner, Device, Page

# Create your views here.

def homepage(request):
    home = Page.objects.all()
    return render(request, 'courses/homepage.html', {'homepage': homepage})

def contact(request, contact_pk):
    contact = get_object_or_404(Page, pk=contact_pk)
    return render(request, 'courses/contact.html', {'contact': contact})

def login(request, login_pk):
    login = get_object_or_404(Page, pk=login_pk)
    return render(request, 'courses/login.html', {'login': login})

def products(request, products_pk):
    product = get_object_or_404(Page, pk=products_pk)
    return render(request, 'courses/products.html', {'product': product})

def register(request, register_pk):
    register = get_object_or_404(Page, pk=register_pk)
    return render(request, 'courses/register.html', {'register': register})

我还会包含 homepage.html 和 products.html 以防万一: 主页.html:

{% extends "layout.html" %}

{% block title %}{{ page.title }}{% endblock %}
{% block content %}
<article>
    <div class="main_body">
        <div class="hep">
            <section class="product">
                <h3 id="purify">Purifying your life</h3>
                <p id="smartprod">Meet our smart <a href="{% url 'courses:products' %}">products</a> today.</p>
            </section>
        </div>
    </div>
    <div id="information">
        <h3>Change your Home Environment with the new Briggs HealthSmart Air Purifier and Humidifier</h3>
        <p>Run multiple devices at the same time all on your smartphone!</p>
    </div>
    <div id="getStarted">
        <p>If you have an account <a href="{% url 'courses:login' %}">Login</a>, or you can get started today and <a href="{% url 'courses:register' %}">Register</a>!</p>
    </div>
</article>
{% endblock %}

products.html:

{% extends "layout.html" %}

{% block title %}{{ page.title }}{% endblock %}
{% block content %}
<article>
    <div id="wrapper">
        <section>
            <ul id="gallery">
                <li>
                    <a href="{% static 'images/air purifier 03272015.png' %}">
                        <img src="{% static 'images/air purifier 03272015.png' %}" alt="" />
                        <p>The Briggs Air Purifier.</p>
                    </a>
                </li>
                <li>
                    <a href="{% static 'images/base 03272015.png' %}">
                        <img src="{% static 'images/base 03272015.png' %}" alt="" />
                        <p>The Briggs Base.</p>
                    </a>
                </li>
                <li>
                    <a href="{% static 'images/humidifier 03272015.png' %}">
                        <img src="{% static 'images/humidifier 03272015.png' %}" alt="" />
                        <p>The Briggs Air Humidifier.</p>
                    </a>
                </li>
                <li>
                    <a href="{% static 'images/water tank 03272015.png' %}">
                        <img src="{% static 'images/water tank 03272015.png' %}" alt="" />
                        <p>The Briggs Water Tank.</p>
                    </a>
                </li>
            </ul>
        </section>
    </div>
</article>
{% endblock %}

【问题讨论】:

  • 或许应该显示contact.html、products.html等的内容

标签: python django django-templates django-views django-urls


【解决方案1】:

使用

       url(r'^$', views.homepage, name='homepage'),

对于您的主页,您能否向我们展示一下您是如何扩展“layout.html”的?

对于您的联系问题,您可以在您的 url 模式中添加 pk

       url(r'contact/(?P<contact_pk>\d+)/$', views.contact, name='contact'),

【讨论】:

  • 好的,现在当我为除 homepage.html 以外的每个页面执行此操作时,我收到错误“contact() 恰好需要 2 个参数(1 个给定)”所以我认为我需要摆脱第二个参数,因为我没有向它发送任何重要的东西,也没有想出可以作为第二个参数发送的东西
  • 你需要添加contact_pk tu你的url模式查看更新的答案
  • 我没有传递任何像contact_pk那样重要的东西,所以我决定摆脱它并让他们接受一个论点。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 2022-11-15
  • 2012-04-17
  • 2020-04-03
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多