大家好,感謝您的閱讀!Django - 鏈接到主頁中帶有按鈕的網頁部分
我是Django的一位非常新穎的用戶。我決定從我的基本網站轉到django,以瞭解如何使用框架網站。我做了django教程,但是用我的項目......這種方式根本沒有麻煩。
讓我先簡單介紹一下我的項目,以便對整個事情有一個概述。我的基本網頁包含主頁和部分,您可以在其中更改不同的參數(例如室溫)或檢查傳感器數據。現在,我的主頁和溫度控制部分正在運行(幾件事情要解決,但正確渲染)。我想用主頁上的按鈕鏈接每個部分。這是我的主頁模板:
{% extends 'base.html' %}
{% block content %}
<h1>Here goes a title</h1>
<p>A welcome message here...</p>
<h2>please select an action</h2>
<div id="column_left" class="column">
{% for action in actions_list_left %}
<div id="action_box1{{ forloop.counter }}" class="action_box">
<input type="button" onclick= " HELP HERE!! "
id= "{{ action.action_name }}_sel" class="action_button">
<div id="{{ action.action_name }}_desc" class="action_desc">
{{ action.description }}
</div>
</div>
{% endfor %}
</div>
<!--I ommit the right column, containing more actions...-->
{% endblock %}
我想使用我的「動作」模型字段鏈接到其他部分。我的想法是使用動作名稱字段作爲該部分的URL(以通用的「模型」方式執行)。例如,如果我的主頁位於localhost:8000 /並且操作名稱是「temp」,我希望關聯的按鈕鏈接到localhost:8000/temp並呈現合適的模板。
因爲我覺得是一個urls.py問題,我在這裏發佈我的網址文件(不含進口線)...
urls.py
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^$', include('principal.urls')),
url(r'^temp/', include('temp.urls')),
)
主/ urls.py
urlpatterns = patterns('',
url(r'^$', 'principal.views.home', name='home'),
)
溫度/ urls.py
urlpatterns = patterns('',
url(r'^$', 'temp.views.index', name='temp_index'),
url(r'^(?P<pk>\d+)/$',
DetailView.as_view(
model=Room,
template_name='temp/roomTemp.html')),
)
我已經試過,我在其他線程讀過的一些想法......
{% url temp:index %}
這一個扔了NoReverseMatch錯誤......「溫度」不是已註冊的命名空間。然後,我用Google搜索如何通過這個讓我在urls.py改變了這一行:
url(r'^temp/', include('temp.urls', namespace='temp')),
而且在溫度/ urls.py我改了行:
url(r'^$', 'temp.views.index', name='temp'),
兩個網頁仍然呈現OK ,但按鈕不工作(什麼都不做)......它一定很簡單,但所有的url對我來說似乎有點棘手(順便說一下,語法有時像makefile mordor文件:P)。我正在使用Django 1.3
任何幫助將非常感激。此外,任何「良好的Django編碼器」的評論或解釋將是非常有用的,只是爲了不再犯同樣的錯誤!
由於提前,
胡安
編輯: 我在這裏發佈的代碼修復,以防萬一有人發現它有用:
<form action="{% url action.action_url %}">
<input type="submit" id="{{ action.action_name }}_sel" value="" class="action_button">
<div id="{{ action.action_name }}_desc" class="action_desc">
{{ action.description }}
</div>
</form>
嗨esauro, 首先,感謝您的嘗試! 這與我的第一次猜測非常相似......但我很遺憾地說這不起作用。 它返回一個模板語法錯誤(NoReverseMatch渲染時:反轉'temp_index''參數'()'和關鍵字參數'{}'not found。) – yanyish
您正在使用哪個版本的Django ?.這應該適用於Django> = 1.5。如果您使用的是以前的版本,則需要在{%extends'base.html'%}'後面加入'{%load url from future%}'或刪除引號('{%url temp_index%}') – esauro
嗨esauro, 感謝您的幫助。最後我得到了它!我使用的是django 1.3,所以你說的兩個選項都適合我。現在我試圖使用action.action_name來鏈接所有部分。一旦完成,我會發布代碼,以防其他人感興趣。 Thx再次。 – yanyish