如何为我的联系页面制作成功的 ulr

如何解决如何为我的联系页面制作成功的 ulr

我希望客户端被重定向到另一个 HTML 页面,作为我联系表单中成功发送的消息。但我不知道这里到底出了什么问题。我无法重定向到我的成功页面,但表单有效。 #我的主应用程序的 url.py

urlpatterns = [
path('^contact/',include('contactus.urls')),]

#我的联系人应用 url.py

from __future__ import unicode_literals
from django.conf.urls import url
from django.views.generic import TemplateView

from .views import ContactUsView

urlpatterns = [
url(r'^$',ContactUsView.as_view(),{},'contactus'),url(r'^success/$',TemplateView.as_view(),'contactus-success'),]

#contact 应用 view.py

from __future__ import unicode_literals

from django.conf import settings
from django.core.mail import EmailMessage
from django.template import loader
from django.views.generic.edit import FormView

from contactus.forms import ContactUsForm


class ContactUsView(FormView):
    template_name = 'contactus/contact.html'
    email_template_name = 'contactus/contact_notification_email.txt'
    form_class = ContactUsForm
    success_url = "/contact/success/"
    subject = "Contact Us Request"

def get_initial(self):
    initial = super(ContactUsView,self).get_initial()
    if not self.request.user.is_anonymous:
        initial['name'] = self.request.user.get_full_name()
        initial['email'] = self.request.user.email

    return initial

   def form_valid(self,form):
        form_data = form.cleaned_data

    if not self.request.user.is_anonymous:
        form_data['username'] = self.request.user.username

    # POST to the support email
    sender = settings.SERVER_EMAIL
    recipients = (getattr(settings,'CONTACT_US_EMAIL'),)

    reply_to = form_data.get('email') or sender

    tmpl = loader.get_template(self.email_template_name)
    email = EmailMessage(
        self.subject,tmpl.render(form_data),sender,recipients,reply_to=[reply_to],)
    email.send()

    return super(ContactUsView,self).form_valid(form)

#contact 应用 forms.py

from __future__ import unicode_literals
from django import forms


class ContactUsForm(forms.Form):
    name = forms.CharField(required=True,max_length=512)
    email = forms.EmailField(required=True)
    subject = forms.CharField(required=True,max_length=512)
    description = forms.CharField(
        widget=forms.Textarea(attrs={'class': "form-control"}),required=True)

def clean(self):
    cleaned_data = super(ContactUsForm,self).clean()

    return cleaned_data

#Contact.html

{% extends 'website/base.html' %}
{% load static %}

{% block main %}

<!-- ======= Breadcrumbs ======= -->
<section id="breadcrumbs" class="breadcrumbs">
  <div class="container">

    <div class="d-flex justify-content-between align-items-center">
      <h2>Contact</h2>
      <ol>
        <li><a href="home.html">Home</a></li>
        <li>Contact</li>
      </ol>
    </div>

  </div>
  </section><!-- End Breadcrumbs -->


 <section id="contact" class="contact">
  <div class="container">
    <div class="row mt-5 justify-content-center" data-aos="fade-up">
      <div class="col-lg-10">
    <form action="." method="post" role="form" class="PHP-email-form">{% csrf_token %}
           <div class="row">
            <div class="col-md-6 form-group {% if form.name.errors %}has-error{% endif %}">
                <input type="text" name="name" class="form-control"
                   data-rule="minlen:4" data-msg="Please enter at least 4 chars"
                       id="id_name" placeholder="Your Name"
                       value="{% if form.data.name %}{{form.data.name}}{% else%}                                 {{form.initial.name}}{% endif %}" />                                                
                     <div class="validate"></div>
            </div>
            <div class="col-md-6 form-group mt-3 mt-md-0 {% if form.email.errors %}has-error{% endif %}">
                <input class="form-control" type="email" name="email"
                       id="email" data-rule="email" data-msg="Please enter a valid email"
                       id="id_email" placeholder="Your Email"
                       value="{% if form.data.email %}{{form.data.email}}{% else     %}{{form.initial.email}}{% endif %}" />
                <div class="validate"></div>
            </div>
          </div>
         <div class="form-group mt-3 {% if form.subject.errors %}has-error{% endif %}">
                    <input type="text" class="form-control" name="subject" id="subject"     placeholder="Subject"
                           data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject"      />
           <div class="validate"></div>
            <div class="validate"></div>
          </div>
           <div class="form-group mt-3 {% if form.description.errors %}has-error{% endif %}">
               <textarea class="form-control" name="description" rows="5" data-rule="required"
                         data-msg="Please write something for us" placeholder="Message"></textarea>

            <div class="validate"></div>
          </div>
            <div class="mb-3">
          </div>
          <div class="text-center"><button type="submit">Send         Message</button></div>
    
    </form>
      </div>

    </div>

  </div>
</section><!-- End Contact Section -->
{% endblock %}

解决方法

错误可能来自视图。

试试:

    /* eslint-disable semi */
    /* eslint-disable prettier/prettier */
    import React,{Component} from 'react';
    import {View,Text,ToastAndroid,FlatList} from 'react-native';
    
    class Location extends Component {
       constructor(props) {
        super(props);
    
        this.state = {
          location_id: null,locations: [],isLoading: true,};
      }
      componentDidMount = () => {
       this.props.navigation.addListener('focus',() => {
           this.state.isLoading;
        });
         this.getData();
      }
    
      getData = async () => {
        const loc_id = this.props.route.params.location_id;
        return await fetch('http:10.0.2.2:3333/api/1.0.0/location/' + loc_id,{
            method: 'get','headers': {
    
                'Content-Type': 'application/json',},})
            .then((response) => {
              if (response.status === 200) {
                return response.json();
              } else if (response.status === 404) {
                ToastAndroid.show('Unable to locate location',ToastAndroid.SHORT);
              } else {
                throw 'something went wrong';
              }
            })
            .then((responseJson) => {
                  console.log(responseJson);
                  this.setState({
                    locations: responseJson,isLoading: false,});
                    })
            .catch((error) => {
              ToastAndroid.show(error.toString(),ToastAndroid.SHORT);
            });
      }
    
      render() {
    
        if (this.state.isLoading) {
          return (
            <View>
              <Text>Loading...</Text>
            </View>
          )
        } else {
          return (
            <View>
                  <View>
                    <Text>Location ID: {this.props.route.params.location_id}</Text>
                    <Text>Name: {this.state.locations.location_name}</Text>
                    <Text>City: {this.state.locations.location_town}</Text>
                    <Text>Overall rating: {this.state.locations.avg_overall_rating}</Text>
                </View>
    
                 <View>
                 <FlatList
                 data={this.state.locations}
                 renderItem={({item}) => (
                      <View style={{margin: 10,padding: 10}}>
                          <View>
                            <Text>ID: {parseInt(item.location_id)}</Text>
                          </View>
    
                          <View>
                            <Text>Rating: {item.avg_overall_rating}</Text>
                            <Text>Town: {item.location_town}</Text>
                            <Text>Location Review: {item.location_reviews.review_id}</Text>
                          </View>
    
                          <View>
                            <Text>Name: {item.location_name}</Text>
                            <Text>Location Review: {item.location_reviews.map(items => items.review_id)}</Text>
                            <Text>Location Review: {item.location_reviews.map(items => items.review_body)}</Text>
                          </View>
                      </View>
                  )}
                keyExtractor={(item) => item.location_id.toString()}
              />
                </View>
            </View>
              );
        }
    
    
                }
    
      }
    
    export default Location;

或者你可以保持这样的视图并将 urls.py 中的 url 更改为:

success_url = "/success/"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?