如何解决如何为我的联系页面制作成功的 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 举报,一经查实,本站将立刻删除。