Django - 使用主页中的按钮链接到Web部分

时间:2013-10-01 10:58:44

标签: django python-2.7 django-urls

大家好,感谢您的阅读!

我是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错误...'temp'不是注册的命名空间。然后我用谷歌搜索了如何通过这个,我在urls.py中改变了这一行:

url(r'^temp/', include('temp.urls', namespace='temp')),

同样在temp / urls.py中我更改了一行:

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

两个页面仍然呈现正常,但按钮不起作用(什么都不做)...它必须非常简单,但所有的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>

1 个答案:

答案 0 :(得分:0)

如果您不需要使用url名称空间,则可以执行此操作

<强> 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'^$', 'temp.views.index', name='temp_index'),
    url(r'^(?P<pk>\d+)/$',
        DetailView.as_view(
        model=Room,
        template_name='temp/roomTemp.html')),
)

然后在模板中

{% url 'temp_index' %}

希望它适合你。