首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何安装没有模型或视图的应用程序?

如何安装没有模型或视图的应用程序?
EN

Stack Overflow用户
提问于 2013-05-28 04:23:06
回答 1查看 206关注 0票数 0

我正在尝试使用提供的模板从sunlightlabs安装和测试django-蜜罐。

这个应用程序没有附带模型或视图,我对如何让应用程序工作感到困惑。我尝试使用urls来调用模板。

my mysite/mysite/urls.py如下:

代码语言:javascript
复制
from django.conf.urls.defaults import *

urlpatterns = patterns('',
    #url(r'^$', include('honeypot.urls')),
)

我的mysite/蜜罐/urls.py如下:

代码语言:javascript
复制
from django.conf.urls.defaults import *
#from tagging.views import tagged_object_list
from django.conf.urls import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.shortcuts import render
from django.contrib import admin

urlpatterns = patterns('',
    url(r'^$', render, dict(template_name='/home/mohrashak/attribute2/honeypot/templates/honeypot/webpage.html'), name='price'),


)
ROOT_URLCONF="honeypot.urls"

网页的位置

代码语言:javascript
复制
{% load honeypot %}
<form>
{% render_honeypot_field "field_name" %}
</form>

而我的理解是,一些东西将被输入到框中,并使用应用程序进行处理。但是没有模型。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-29 22:00:01

你不需要担心django-蜜罐的模型或视图。它被安装到您的Python库的site-packages文件夹中,所以您不必为您编写model/views/urls.py-这些都在您的pythonpath中。

确保您阅读了安装应用程序的online documentation

核对表如下:

在settings.py;

  • Define

  • 中将honeypot添加到INSTALLED_APPS中,这是用于表单中蜜罐字段的名称。尽量不要使用‘蜜罐’,因为有些机器人会避免使用它。

  • 确保你使用django-honeypot;

  • Then在你的模板顶部添加{% load honeypot %},在你提交的任何表单中使用以下标签-你可以使用来自honeypot.decoratorscheck_honeypot装饰器来检查值是否存在(默认情况下不是)和正确。

以下是文档中要添加到视图中的示例

代码语言:javascript
复制
from honeypot.decorators import check_honeypot

@check_honeypot(field_name='hp_field_name')
def post_comment(request):
    ...

@check_honeypot
def other_post_view(request):
    ...

Edit1:

对您的评论的回应:

  1. 支持;
  2. 支持。
  3. 否- django-honeypot的本质是防止“表单垃圾邮件”。因此,您的模板中必须至少有一个表单。您应该将表单从视图传递到模板。更多信息in the documentation。我在下面写了一个几乎完整的例子。

使用django-蜜罐的联系人表单示例

注意:这是未经测试的。

这是一个创建并显示联系人表单(通过转到/contact/ URL),然后处理正在提交的表单的示例。假设我们使用了django_admin.py startapp contact_app

urls.py

您的URL文件接受/contact/ URL,并将请求传递给我们的contact视图。

代码语言:javascript
复制
from django.conf.urls import patterns, url

urlpatterns = patterns('',
    url(r'^contact/$', 'contact_app.views.contact'),
)

contact_app/views.py

视图文件接受请求,并处理GETPOST请求。如果请求是一个GET,它会将一个空表单传递给模板。如果是POST,则检查表单是否有效并处理表单。我们将它包装在check_honeypot装饰器中,以确保它通过我们的django-honeypot测试。

代码语言:javascript
复制
from contact_app.forms import ContactForm
from honeypot.decorators import check_honeypot

@check_honeypot
def contact(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            return HttpResponseRedirect('/thanks/') # Redirect after POST
    else:
        form = ContactForm() # An unbound form

    return render(request, 'contact.html', {
        'my_form': form,
    })

contact_app/forms.py

在这里,我们指定需要并显示在模板中的表单字段。

代码语言:javascript
复制
from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=100)
    message = forms.CharField()
    sender = forms.EmailField()
    cc_myself = forms.BooleanField(required=False)

templates/contact.html

在我们看来,我们将表单(名为my_form)传递给模板,并使用django的模板语言将每个字段呈现为<p></p>。我们还加载蜜罐并插入必要的字段。

代码语言:javascript
复制
{% load honeypot %}

<form action="/contact/" method="post">{% csrf_token %}
{{ my_form.as_p }}
{% render_honeypot_field "field_name" %}
<input type="submit" value="Submit" />
</form>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16780086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档