developers.I am Erlernen der django im Anschluss an diese book und die Änderungen für django 1.8Wie kann der Django-Import von der View-Funktion gelöst werden?
Der Fehler zeigt ist
name 'addPublisher' is not defined
Request Method: GET
Request URL: http://127.0.0.1:8000/add
Django Version: 1.8.7
Exception Type: NameError
Exception Value:
*name 'addPublisher' is not defined*
Exception Location: /home/abhi/Desktop/Trade/Trade/urls.py in <module>, line 26
Python Executable: /usr/bin/python
Python Version: 2.7.11
Python Path:
['/home/abhi/Desktop/Trade',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
Server-Zeit: Sa 23. Juli 2016 18.07.53 0.000
Mein views.py ist -
from django.shortcuts import render
from django.db.models import Q
from django.shortcuts import render_to_response
from django.template import Template, Context
from books.models import Book
from books.forms import ContactForm,PublisherForm
from django.core.mail import send_mail
# Create your views here.
def search(request):
query = request.GET.get('q', '')
if query:
qset = (
Q(title__icontains=query) |
Q(authors__first_name__icontains=query) |
Q(authors__last_name__icontains=query)
)
results = Book.objects.filter(qset).distinct()
else:
results = []
return render_to_response("search.html", {
"results": results,
"query": query
})
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
topic = form.clean_data['topic']
message = form.clean_data['message']
sender = form.clean_data.get('sender', '[email protected]')
send_mail(
'Feedback from your site, topic: %s' % topic,
message, sender,
['[email protected]']
)
return HttpResponseRedirect('/contact/thanks/')
else:
form = ContactForm()
return render_to_response('contact.html', {'form': form})
def addPublisher(request):
if request == 'POST':
form = PublisherForm(request.POST)
if form.is_valid:
form.save()
return HttpResponseRedirect('add_publisher/thanks/')
else:
form = PublisherForm()
return render_to_response('book/addPublisher.html',{'form':form})
Mein urls.py hat folgende Code-
from django.conf.urls import include, url
from django.contrib import admin
from views import *
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^$',home),
url(r'^search/$',search),
url(r'^contact/$',contact),
url(r'^add/$',addPublisher)
]
Es sieht für mich so aus, als wäre Ihre views.py von einer der Webapps, sollten Sie sagen "von webapp.view import *" Um einfach zu sein, ist Ihre views.py und urls.py im selben Ordner? –
wie folgt importieren: aus Ansichten import addPublisher, nicht so: aus Ansichten importieren * - auf diese Weise erhalten Sie möglicherweise eine informativere Fehlermeldung (zB vielleicht ist Ihr addPublisher in einer anderen Sichten-Datei in einem anderen Ordner usw., wie Djangoprojekte normalerweise viele haben) sie) – Bob
Beachten Sie, dass das Django Buch mit Django 1.0 geschrieben wurde, das vor 11 Jahren veröffentlicht wurde. Es gibt viele Inkompatibilitäten zwischen 1.0 und 1.8, es wäre wahrscheinlich viel einfacher, mit einer aktuellen Ressource zu lernen. – knbk