我正在尝试使用提供的模板从sunlightlabs安装和测试django-蜜罐。
这个应用程序没有附带模型或视图,我对如何让应用程序工作感到困惑。我尝试使用urls来调用模板。
my mysite/mysite/urls.py如下:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
#url(r'^$', include('honeypot.urls')),
)我的mysite/蜜罐/urls.py如下:
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"网页的位置
{% load honeypot %}
<form>
{% render_honeypot_field "field_name" %}
</form>而我的理解是,一些东西将被输入到框中,并使用应用程序进行处理。但是没有模型。我遗漏了什么?
发布于 2013-05-29 22:00:01
你不需要担心django-蜜罐的模型或视图。它被安装到您的Python库的site-packages文件夹中,所以您不必为您编写model/views/urls.py-这些都在您的pythonpath中。
确保您阅读了安装应用程序的online documentation。
核对表如下:
在settings.py;
honeypot添加到INSTALLED_APPS中,这是用于表单中蜜罐字段的名称。尽量不要使用‘蜜罐’,因为有些机器人会避免使用它。
{% load honeypot %},在你提交的任何表单中使用以下标签-你可以使用来自honeypot.decorators的check_honeypot装饰器来检查值是否存在(默认情况下不是)和正确。以下是文档中要添加到视图中的示例
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:
对您的评论的回应:
django-honeypot的本质是防止“表单垃圾邮件”。因此,您的模板中必须至少有一个表单。您应该将表单从视图传递到模板。更多信息in the documentation。我在下面写了一个几乎完整的例子。使用django-蜜罐的联系人表单示例
注意:这是未经测试的。
这是一个创建并显示联系人表单(通过转到/contact/ URL),然后处理正在提交的表单的示例。假设我们使用了django_admin.py startapp contact_app
urls.py
您的URL文件接受/contact/ URL,并将请求传递给我们的contact视图。
from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^contact/$', 'contact_app.views.contact'),
)contact_app/views.py
视图文件接受请求,并处理GET和POST请求。如果请求是一个GET,它会将一个空表单传递给模板。如果是POST,则检查表单是否有效并处理表单。我们将它包装在check_honeypot装饰器中,以确保它通过我们的django-honeypot测试。
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
在这里,我们指定需要并显示在模板中的表单字段。
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>。我们还加载蜜罐并插入必要的字段。
{% load honeypot %}
<form action="/contact/" method="post">{% csrf_token %}
{{ my_form.as_p }}
{% render_honeypot_field "field_name" %}
<input type="submit" value="Submit" />
</form>https://stackoverflow.com/questions/16780086
复制相似问题